недопустимое использование нестатического член данных

Для такого кода:

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 в конструкторе. В чем тогда решение?

34
задан Alecs 6 March 2012 в 21:29
поделиться