一个类中的类访问外部类的数据成员

时间:2012-10-04 09:51:51

标签: c++

我试图这样做,

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

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

以上无法编译错误:

  

错误:无效使用非静态数据成员'Outer :: _ x'

但根据this postinner_t确实可以访问Outer::_x,这有什么不对?

2 个答案:

答案 0 :(得分:6)

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

如果你写过(例如):

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

或者_xOuter的静态成员。 然后它应该工作(至少它不会给出任何错误)。

答案 1 :(得分:2)

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