我对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' : illegal call of non-static member function
我的问题是,submachine
是FSM
的成员,所以不应该有权访问FSM
所有属性的本地实例?如果不是,当我们创建FSM
的实例时,我们是不是要创建其所有成员的实例,即submachine
?如果是这样,那么为什么我们需要创建一个对象onentry()
需要?
我假设编译器是正确的,所以我也想知道是否有办法使这项工作。
注意:不幸的是,内部结构(submachine
)的实例在调用事件时被实例化,因此我只能定义类型,而不是在FSM
中为它们实例化对象。
如果有一种方法可以完成我想完成的任务吗? – Kam 2012-07-10 00:30:48
Downvoter:关心分享? – 2012-07-10 00:33:51
(对不起,延期,找到链接)。嵌套类是成员,可以像任何其他成员一样访问外部类,请参阅[DR 45](http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#45),它是自2003年以来的标准 – 2012-07-10 00:35:54