2011-01-30 1 views
3

Класс сторонней библиотеки содержит защищенный член. Как я могу получить к нему доступ, если мы не можем изменить код сторонней библиотеки?Как получить доступ к защищенному члену, если мы не можем изменить класс?

+0

Почему вы хотите получить к нему доступ? Почему вы знаете, что это там, в первую очередь? Защита выполняется по какой-то причине ... –

+0

Файлы заголовков C++ дадут определения всех общедоступных, защищенных и частных методов. –

ответ

8

Защищенный член может быть доступен только классам, подклассам или классам друзей и классам. Единственный способ доступа к защищенному члену - подкласс класса, а затем использовать ваш подкласс для защиты защищенного члена.

Например:

class parent { 
    /* Other members */ 
    protected: 
    int foo(); 
} 


class child : public parent { 
    public: 
    int foo(); 
} 
3

Вы должны сделать специальную оболочку для этого класса. Просто наследуйте класс библиотеки и получите доступ к защищенным членам. Из-за наследования можно использовать класс оболочки вместо базового класса в следующем коде.

1

Вы можете получить доступ к защищенным членам из производного класса.

class A 
{ 
    protected: 
    int i; 
}; 

class B : public A 
{ 
    void func() 
    { 
    i; //valid 
    } 
}; 
+0

Недействительно, 'i' по-прежнему защищен в' B'. Вы должны сделать это явно публичным. – GManNickG

Смежные вопросы