2

我试图这样做,

class Outer {
public:
    struct inner_t {
        void foo()
        {
            printf("%d", _x);
        }
    };
    int _x;
};

int main()
{
    Outer o;
    o._x = 10;
}

以上无法编译错误:

错误:非静态数据成员'Outer::_x'的使用无效</p>

但是按照这个帖子inner_t确实可以访问Outer::_x,怎么了?

4

2 回答 2

6

问题是:inner_t不知道Outer要读取的实例_x

如果你写过(例如):

void foo(const Outer *o)
{
    printf("%d", o->_x);
}

或者如果_xOuter. 然后它应该可以工作(至少它不会出错)。

于 2012-10-04T09:53:09.530 回答
2

您确实可以访问_x类型的对象Outer。您基本上尝试以静态方式访问实例字段。传递一个实例Outer然后使用它。

于 2012-10-04T09:53:54.363 回答