c++ 私有静态Constexpr成员变量在Main中不可访问?

3htmauhk  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(145)

在我的Environment类中,我有一个私有静态成员变量:

class Environment {
public:
    // ...

private:
    std::vector<Part> objects;
    Color background_color;
    
    //ERROR:
    static constexpr Color default_background_color = Color({ 210, 210, 210 });
};

总的来说,我试图访问这个变量:

int main() {
    // ERROR: 'member "Environment::default_background_color" is inaccessible'
    Environment environment(0.1, Environment::default_background_color); 
}

所以我的问题是,出了什么问题?我如何创建一个const静态变量,使其可以在Environment类之外访问?

2w3kk1z5

2w3kk1z51#

您的数据成员被声明为private(而不是static,顺便说一句),因此类之外的任何代码都无法访问它。
如果希望main()访问成员,请执行以下任一操作:

  • 将成员声明为public(和static):
class Environment {
public:
    Environment(double air_density, Color background_color);
    ...
    static constexpr Color default_background_color = Color({ 210, 210, 210 });
    ...
};
int main() {
    Environment environment(0.1, Environment::default_background_color); // OK
    ...
}

Online Demo

  • main()声明为类的friend

一个二个一个一个
Online Demo

相关问题