Как получить доступ к защищенному члену, если мы не можем изменить класс? - PullRequest
3 голосов
/ 30 января 2011

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

Ответы [ 3 ]

8 голосов
/ 30 января 2011

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

Например:

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


class child : public parent {
  public:
    int foo();
}
3 голосов
/ 30 января 2011

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

1 голос
/ 30 января 2011

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

class A
{
  protected:
  int i;
};

class B : public A
{
  void func()
  {
    i; //valid
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...