С++, как получить доступ к статическим членам базового класса в производном классе?

Я новичок в статических переменных С++. Я не знаю, как получить доступ к статическому члену базы из функции члена производного класса. Пример

#include <iostream.h>
  class base       // base class
 { 
  protected:
  static int value;
  };

 int base::value=0; // static variable initalization

 class derived:public base
 {
  public:
  get_variable();
  };

я знаю, что статическая переменная является переменной класса. мы можем получить доступ только с помощью имени класса, которое не связано с объектом (поправьте меня, если я ошибаюсь). мой вопрос заключается в том, как мне получить доступ к статической переменной в функциях-членах производного класс get_varible получает доступ к статической переменной.?


person tamil_innov    schedule 21.11.2013    source источник
comment
Пока переменная является закрытой, вы не можете получить к ней доступ в производном классе.   -  person edA-qa mort-ora-y    schedule 21.11.2013


Ответы (3)


Вы должны изменить private на protected в базовом классе. Доступ к вашей переменной private static возможен только в классе base.

person Victor Polevoy    schedule 21.11.2013

Просто используйте его как член производного класса.

int derived::get_variable()
{
   return value; 
}
person Deidrei    schedule 21.11.2013

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

int derived::get_variable()
{
     return base::value;
}

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

Как объяснено здесь и здесь дополнительные проверки, которые не позволяют доступ к защищенным членам класса из производного класса в определенных обстоятельствах не применяется к статическим членам.

person user8502334    schedule 10.10.2017