Ich frage mich, warum es nicht erlaubt ist, zu schreiben:Deklaration und Deklaration mit Definition. Warum ist das nicht erlaubt?
struct foo {
void bar(); // declaration
void bar(){std::cout << "moo" << std::endl;} // declaration + definition
};
Die Funktion zweimal deklariert wird (ich dachte, das ist in Ordnung) und einmal definiert. Allerdings ist mein Compiler beschwert sich über:
decldef.cxx:7:10: error: 'void foo::bar()' cannot be overloaded
Warum ist es nicht erlaubt?
Warum interpretiert mein Compiler (g ++ 4.7.2) dies als Überlastung?
PS: Ich weiß, wie man es "den richtigen Weg" schreibt, aber ich möchte nur wissen, warum das oben genannte falsch ist.
Tat aber diese Frage geht meiner Meinung nach zumindest tiefer. Wenn zum Beispiel "struct" durch "namespace" ersetzt wurde, ist der Code gültig. – Bathsheba
Gute Frage, wirklich.Der "+ Definition" -Teil ist eigentlich irrelevant; auch eine wiederholte Deklaration mit identischer Unterschrift ist hier nicht erlaubt. – mindriot