如何从类中定义的结构访问私有成员? C ++

时间:2018-07-11 20:50:02

标签: c++ c++11

我在类中定义了一个结构,如下所示:

class my_header {

public:
    my_header();

    struct add_x {
        double operator()() const { return a; }
    } add_x;

private:
    double a{1.0}; 
};

编译(g ++ -std = c ++ 11)时,出现以下错误:

./my_header.h:19:40: error: use of non-static data member 'a' of
      'my_header' from nested type 'add_x'
                double operator()() const { return a; }

是否可以从类本身定义的结构中访问该类的私有成员?

1 个答案:

答案 0 :(得分:0)

问题是add_x嵌套类型的add_x实例不知道用于访问字段my_header的{​​{1}}的正确实例。这就是为什么它抱怨my_header::a是非静态的(如果它是静态的,它将知道您要a是什么)。

一种替代方法是让a在其构造函数中引用add_x,并使用该实例访问my_header