Для кода, подобного этому:
class foo {
protected:
int a;
public:
class bar {
public:
int getA() {return a;} // ERROR
};
foo()
: a (p->param)
};
Я получаю эту ошибку:
invalid use of non-static data member 'foo::a'
в настоящее время переменная a
инициализируется в конструкторе foo
.
если я сделаю его статическим, тогда он говорит:
error: 'int foo::a' is a static data member; it can only be initialized at its definition
Однако я хочу передать значение a
в конструкторе.
Каково решение тогда?