Ist der Compiler plötzlich blind?
-
Abent. Zuerst mal ein wenig Code...
#include <iostream> class interface_type { int fld; protected: explicit interface_type(int wat) : fld(wat) { } int &get() { return fld; } public: const int &get() const { return fld; } }; class implementation : public interface_type { public: explicit implementation(int wat) : interface_type(wat) { } }; int main() { using namespace std; // implementation impl(77); wcout << impl.get(); }Wenn ich das durch den Compiler (Visual C++ 2008) jage bekomme ich den folgenden Fehler:
... (34) : error C2248: 'interface_type::get' : cannot access protected member declared in class 'interface_type'Meine Frage ist, WARUM dies ein Fehler sein soll. Wieso greift der Compiler nicht auf die offensichtliche non-const Variante zu? MfG
-
Weil die protected Methode ein besseres Match ist?
-
du rufst ja auch nicht const auf
-
Don06 schrieb:
Weil die protected Methode ein besseres Match ist?
Das mag stimmen, aber sie ist ja protected und kommt darum gar nicht in Frage?

-
Handle-ID_ #432-12-7629 schrieb:
Don06 schrieb:
Weil die protected Methode ein besseres Match ist?
Das mag stimmen, aber sie ist ja protected und kommt darum gar nicht in Frage?

nein, kommt sie schon
-
Okay. Und wie löse ich das Problem am besten?
thx 4 help so far

-
Ach, ist schon gut habs gefunden... Designtechnisch nicht gerade gut was ich momentan habe. Ich werde die protected members rausschmeissen, denn die brauch ich nicht wenn ichs redesigne

thx