我在类中定义了一个结构,如下所示:
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; }
是否可以从类本身定义的结构中访问该类的私有成员?
答案 0 :(得分:0)
问题是add_x
嵌套类型的add_x
实例不知道用于访问字段my_header
的{{1}}的正确实例。这就是为什么它抱怨my_header::a
是非静态的(如果它是静态的,它将知道您要a
是什么)。
一种替代方法是让a
在其构造函数中引用add_x
,并使用该实例访问my_header
。