2012-10-04 70 views
2

我试图做到这一点,一个一流类访问外部类的数据成员

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

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

上面不能有错误编译:

error: invalid use of non-static data member ‘Outer::_x’

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

回答

6

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

如果您有(例如)写:

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

或者,如果_x是的Outer静态成员。 然后它应该工作(至少它不会有错误)。

+0

拍,愚蠢的我,:-)。 – Alcott

2

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

相关问题