000
29.11.2004, 16:20 Uhr
~doppler
Gast
|
Hallo Leute, beim Übersetzen des folgenden Codes gibt mir der Compiler den Fehler
Zitat: |
In function `int main()': 25: error: no matching function for call to `class3::isClass(bool)' 17: error: candidates are: static bool class3::isClass(const class3&
|
Das lässt sich zwar durch entfernen der Kommentar-Zeichen in Zeile 18 und 19 leicht ändern, aber ich hätte erwartet, dass der Compiler automatisch erkennt, dass ich nicht die Funktion 'bool isClass(const bool &' überladen möchte, sondern eine neue Funktion 'bool isClass(const class3 &' einführen will.
Weiß jemand, ob das ein Compiler-Bug (gcc 3.3.3) oder C++-Standard ist? Und wenn Standard wieso? Danke.
C++: |
#include <iostream>
class class1 { public:
virtual bool isClass(const bool & b) const = 0; };
class class2 : public class1 { public: virtual bool isClass(const bool & b) const {return b;};
};
class class3 : public class2 { public: static bool isClass(const class3& b) {return false;}; // virtual bool isClass(const bool & b) const // {return class2::isClass(b);}; };
int main() {
class3 test; std::cout << "isClass virtual: " << test.isClass(true) << std::endl; std::cout << "isClass static: " << class3::isClass(test) << std::endl;
};
|
|