no, teoreticky moze manipulovat s protected premennymi iba trieda, ktora je zdedena od tej, ktorej patri dana premenna. Ale smerniky ti dovolia manipulovat aj s private aj s protected premennymi. napr :
Kód:
#include <stdio.h>
class a {
protected:
int i;
public:
a() {
i=9;
}
int return_i() {
return i;
}
int *addd() {
return &i;
}
};
int main() {
a A;
int *p;
printf("%d\n",A.return_i());
//p=A.addd();
p=(int*)&A;
*p=2;
printf("%d\n",A.return_i());
return 0;
}
toto riesenie je ale pravdepodobne dost zavisle na pouzitom kompilatore, neviem ako by sa spravalo napriklad vo visual studiu, kedze mozno naraba s class-ami trochu inak, a nemusi platit takato jednoducha finta, v tom priade by sa dal pozit ten zakomentovany riadok a funkcia addd, ktora vrati adresu premennej i a potom mozes na nu normalne zapisovat. Pokial by si chcel zapisovat na premenne, ktore nie su uplne na zaciatku, cize nemaju rovnaku adresu ako struktura, bolo by treba najskor skontrolovat, s akym posunutim sa vyskytuju v programe a az potom zapisovat na *(p+posunutie). Ale to uz je trochu divne a v tomto stave nie prilis pouzitelne riesenie, kedze po pridani nejakej premennej na nevhodne (pricom tazko je odhadnut nevhodne) miesto, by sa to cele poposuvalo.