mi chiedo, perché non è permesso di scrivere:Dichiarazione e dichiarazione con definizione. Perché questo non è permesso?
struct foo {
void bar(); // declaration
void bar(){std::cout << "moo" << std::endl;} // declaration + definition
};
La funzione è dichiarata due volte (ho pensato che questo è ok) e definito una volta. Tuttavia, il mio compilatore si lamenta:
decldef.cxx:7:10: error: 'void foo::bar()' cannot be overloaded
Perché non è permesso?
Perché il mio compilatore (g ++ 4.7.2) lo interpreta come sovraccarico?
PS: so come scriverlo "nel modo corretto", ma vorrei solo sapere, perché quanto sopra è sbagliato.
In effetti, ma questa domanda è più profonda di questa, almeno secondo me. Ad esempio, se 'struct' è stato sostituito con' namespace', il codice è valido. – Bathsheba
Buona domanda, davvero.La parte "+ definizione" è in realtà irrilevante; anche una dichiarazione ripetuta con firma identica non è consentita qui. – mindriot