我相对于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();};
};
};
以下是出现的错误:
Error: 'FSM::getX' : 非法调用非静态成员函数
我的问题是,submachine
是 FSM
的成员,那么它不应该可以访问 FSM
的所有属性的本地实例吗?如果不行,那么当我们创建 FSM
实例时,我们不会同时创建其所有成员,即 submachine
吗?如果是这样,为什么我们需要创建一个 onentry()
需要的对象呢?
我假设编译器是正确的,那么我也想知道有没有办法使它工作。
注意:不幸的是,内部结构(submachine
)的实例是在调用事件时实例化的,因此我只能定义类型,而不能在 FSM
中实例化它们的对象。
submachine
,但是如何实现呢?它将如何与特定的FSM
对象绑定? - Oliver Charlesworth