Droite.
Maintenant la vérification de la réalité & hellip;
MinGW g ++ 4.4.1:
x.cpp: In function 'int main()': x.cpp:3: error: 'void Base::foo()' is inaccessible
x.cpp:15: error: within this context
Visual C++ 10,0:
x.cpp(15) : error C2248: 'Derived::foo' : cannot access private member declared in class 'Derived'
x.cpp(9) : see declaration of 'Derived::foo'
x.cpp(6) : see declaration of 'Derived'
Comeau Online 4.3.10.1:
In strict mode, with -tused, Compile succeeded (but remember, the Comeau online compiler does not link).
Compiled with C++0x extensions enabled.
Oops. Et Comeau est celui qui a presque toujours raison! Eh bien, éteindre C++ 0x extensions, pour 98 C++/C++ 03:
In strict mode, with -tused, Compile succeeded (but remember, the Comeau online compiler does not link).
Compiled with C++0x extensions DISabled.
Oops!
Eh bien, vous mine Biggie, comme on dit en Norvège (littéralement traduit en anglais).
J'essaierais de signaler cela à Comeau.
EDIT: puisque Prasoon a également répondu, citant le Saint Standard avec son interprétation de ce qui contredit ce que j'ai écrit ci-dessus, bien, OK, standadeese & hellip;
§11.3/1 "L'accès d'un membre d'une classe de base peut être modifié dans la classe dérivée & hellip;", et ainsi de suite, aussi clair que possible (aucune interprétation requise). Et avec un exemple concret. Et le texte normatif indiquant que cela équivaut à une déclaration using
.
Vive & HTH.,
Quel compilateur utilisez-vous? –
Vite Falcon .... g ++. – JKS
Vous avez accepté la réponse de @Prasoon Saurav, ce qui est bien. Mais vous devez être conscient que cette méthode, bien que techniquement légale, est obsolète et ne devrait pas être utilisée dans le développement de nouveaux champs. –