相关疑难解决方法(0)

内部类可以访问私有变量吗?

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++ inner-classes

108
推荐指数
3
解决办法
9万
查看次数

内部类访问外部类

我对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.

c++ structure

19
推荐指数
1
解决办法
3万
查看次数

标签 统计

c++ ×2

inner-classes ×1

structure ×1