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

How access to private members from a struct defined within a class? c++

本文关键字:访问 成员 c++ 结构 定义      更新时间:2023-10-16

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

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; }

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

问题是add_x嵌套类型的add_x实例不知道用于访问字段my_header::amy_header的正确实例。这就是为什么它抱怨a是非静态的(如果它是静态的,它就会知道你想要什么a(。

另一种选择是让add_x在其构造函数中引用my_header,并使用该实例访问a