class Outer {
class Inner {
public:
Inner() {}
void func() ;
};
private:
static const char* const MYCONST;
int var;
};
void Outer::Inner::func() {
var = 1;
}
const char* const Outer::MYCONST = "myconst";
Run Code Online (Sandbox Code Playgroud)
当我使用类Outer :: Inner'编译时,这个错误输出没有名为`var'的成员
我对C++比较陌生,我已经看了很多答案,但我从来没有得到满意的答案.
假设我有一个名为的结构FSM.最终在我的代码中,FSM可以创建多个实例.其中一个FSM属性int X不是静态的,每个实例都FSM应该有自己的值X.
现在,其中一个FSM属性是另一个submachine需要读取这样的值的结构X:
struct FSM
{
public:
int x;
int getX(){return x;}
struct submachine
{
void onentry() {int g = getX();};
};
};
Run Code Online (Sandbox Code Playgroud)
这会出现以下错误:
错误:'FSM :: getX':非静态成员函数的非法调用
我的问题是,submachine是一个成员FSM,所以它不应该有权访问所有属性的本地实例FSM吗?如果没有,当我们创建一个实例时FSM,我们不会创建其所有成员的实例,即submachine?如果是这样,那么为什么我们需要创建一个需要的对象onentry()呢?
我假设编译器是正确的,所以我也想知道是否有办法使这项工作.
注意:不幸的是,内部结构(submachine)的实例在调用事件时被实例化,因此我只能定义类型,而不是为它们实例化对象FSM.