er will nur ohne^^
-
...und zwar ohne const, mein lieber compiler. folgende situation:
#include <iostream> using namespace std; class foo { protected: void bar() { cout << L"Noez!" << endl; } public: void bar() const { cout << L"Yeah!" << endl; } }; int main() { foo some; // error C2248: 'foo::bar' : cannot access protected member declared in class 'foo' some.bar(); // <== warum nimmt der compiler nicht einfach void bar() const? }frage steht im quelltext.

-
Weil es kein const objekt ist
-
aber wenn ich die nicht-const methode auskommentiere nimmt er es ja trotzdem?

-
Bester Fred-Titel der Woche

-
In C++ wird die Zugreifbarkeit zuletzt bewertet, und beim Suchen einer passenden Funktion passt die non-const Methode nunmal besser als die const Methode. Danach, beim Prüfen der Zugreifbarkeit, bemerkt der Compiler völlig zurecht, dass er die nicht aufrufen darf.
-
Zugriffskontrolle verändert niemals den Sinn eines Konstrukts. Die Überladungsauflösung findet die beste Überladung aus allen möglichen (per Namelookup gefundenen) Funktionen. Zugriffskontrolle erlaubt dann diesen Aufruf oder verbietet ihn.
-
camper schrieb:
Zugriffskontrolle verändert niemals den Sinn eines Konstrukts. Die Überladungsauflösung findet die beste Überladung aus allen möglichen (per Namelookup gefundenen) Funktionen. Zugriffskontrolle erlaubt dann diesen Aufruf oder verbietet ihn.
will heissen, ich muss protected bar umbenennen

danke jungs

-
++ für den Titel. Was, wir sind gar nicht im Heise-Forum? :p
-
dreistein schrieb:
will heissen, ich muss protected bar umbenennen

Oder some const machen...