类内类访问外部类的数据成员
a in-class class access the outer class's data member
我试图这样做,
class Outer {
public:
struct inner_t {
void foo()
{
printf("%d", _x);
}
};
int _x;
};
int main()
{
Outer o;
o._x = 10;
}
以上无法编译错误:
错误:非静态数据成员"外部::_x"的使用无效
但根据这篇文章,inner_t
确实可以访问Outer::_x
,怎么了?
问题是:inner_t
不知道要从中读取_x
的Outer
实例。
如果您写过(例如):
void foo(const Outer *o)
{
printf("%d", o->_x);
}
或者,如果_x
是Outer
的静态成员.然后它应该可以工作(至少它不会出错)。
您确实可以访问Outer
类型的对象的_x
。您基本上尝试以静态方式访问实例字段。传递Outer
的实例,然后使用它。
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 使用指针访问数组中的对象数据成员
- 友元函数无法访问私有数据成员 (c++)
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 访问数据成员(本身是对象)的数据成员,就好像它们是类成员一样
- 使公共数据成员在C++中无法访问
- 有没有办法在C++中循环访问对象的不同数据成员
- 为什么类成员数据必须是静态的才能被模板化类的模板化结构成员访问
- 如何在C++中使用类对象访问指针数据成员
- 通过指针算法访问结构数据成员
- 是否可以访问类数据成员并在析构函数中对它们执行操作?
- 如何在 c++ 中访问类的私有数据成员
- 现代C++编译器是否优化了对类中同一数据成员的重复访问?
- 无法访问派生类函数内的基类的受保护数据成员
- 从私有结构数据成员访问类公共成员函数C++
- 有关C++/组件数据布局、数据成员访问、方法的一般问题
- C++ 共享库不允许静态数据成员访问
- 私人数据成员访问
- OpenCV Mat数据成员访问
- 数据成员访问歧义和菱形继承