C ++ e valutazione dei puntatori di funzione: mancanza di ispirazione

1

Ho una valutazione da dare ai miei studenti.

Riguarda C ++ e i puntatori di funzioni.

La loro abilità è al centro: è il primo anno di una scuola di programmazione dopo la laurea.

Per darti qualcosa di preciso, ecco un esempio di una soluzione di uno degli 3 esercizi che dovevano fare in 30 minuti (la domanda era: " ecco una versione di un codice che potrebbe essere scritto con i puntatori di funzione, scrivi la stessa cosa ma con i puntatori di funzione "):

typedef void (*fcPtr) (istream &);
fcPtr ArrayFct [] = { Delete , Insert, Swap, Move };

void HandleCmd (const string && Cmd)
{
    string AvalaibleCommands ("DISM");
    string::size_type Pos;
    istringstream Flux (Cmd);

    char CodeOp;
    Flux >> CodeOp;

    Pos = AvalaibleCommands.find (toupper (CodeOp));

    if (Pos != string::npos) {
        ArrayFct [Pos](Flux);
    }
}

Qualche idea su dove potrei trovare ispirazione?

Alcuni studenti hanno capito i principi, anche se è molto difficile per loro scrivere codice C ++. Li conosco, so che sono intelligenti e sono abbastanza sicuro che dovrebbero essere ottimi project manager. Quindi, scrivere codice C ++ non è che importante dopo tutto. La comprensione è la parte più importante (IMHO).

Mi chiedo se sia possibile rompere le abitudini e dare metà delle domande sul principio, o meglio ancora, dare qualche esempio in altro linguaggio e chiedere loro perché è meglio usare i puntatori di funzione invece della programmazione classica (di solito un grande switch case ).

Qualche idea su dove potrei apparire? Trova qualche ispirazione?

    
posta OlivierDofus 27.03.2012 - 17:14
fonte

1 risposta

3

La mia reazione immediata sarebbe di sedermi e pensarci due volte prima di farlo. I puntatori alle funzioni non sono esattamente la caratteristica più comunemente utilizzata in C. Almeno il 95% delle volte che si utilizza un puntatore a una funzione in C, è meglio usare una funzione virtuale in C ++.

Ciò che ti rimane è una quantità così limitata di uso legittimo che non ha molto senso insegnarlo a meno che tu non abbia coperto ogni dettaglio della lingua in modo così dettagliato che non è rimasto nient'altro copertina (che, dopo solo 4 anni di lezioni, mi sembra improbabile altamente ).

    
risposta data 27.03.2012 - 18:05
fonte

Leggi altre domande sui tag