c++ - 私有静态 Consexpr 成员变量在 Main 中不可访问?
问题描述
在我的环境类中,我有一个私有静态成员变量:
class Environment {
public:
Environment(double air_density, Color background_color);
void create_new(const Part &object);
double get_air_density() const noexcept;
void set_air_density() noexcept;
Color get_background_color() const noexcept;
void set_background_color() noexcept;
std::vector<Part> get_objects() const noexcept;
void set_objects() noexcept;
private:
std::vector<Part> objects;
Color background_color;
//ERROR:
static constexpr Color default_background_color = Color({ 210, 210, 210 });
};
主要是我试图访问该变量:
int main() {
Environment environment(0.1, Environment::default_background_color); // ERROR: 'member "Environment::default_background_color" is inaccessible'
Part part(10, 10, 50, 50, false, 0, true);
environment.create_new(part);
while (running) {
part.update_position(0.1);
background(141, 3, 255);
part.draw();
render(dc);
}
}
所以我的问题是,出了什么问题,如何制作一个可以在 Environment 类之外访问的 const 静态变量?
解决方案
您的数据成员已声明private
(而不是static
,顺便说一句),因此类外的任何代码都无法访问它。
如果您想main()
访问该成员,请执行以下任一操作:
- 将成员声明为
public
(andstatic
):
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
...
}
- 声明
main()
为friend
类的一个:
class Environment {
public:
Environment(double air_density, Color background_color);
...
private:
...
static constexpr Color default_background_color = Color({ 210, 210, 210 });
friend int main();
};
int main() {
Environment environment(0.1, Environment::default_background_color); // OK
...
}
推荐阅读
- regex - 从正则表达式匹配中删除最后一个字符
- gradle - JAXBException: class ... 此上下文不知道它的任何超类
- python - 从字典列表中的字典中删除键
- jenkins - 使用 Kubernetes 和 Jenkins 在持续交付中实现手动审批
- python - 预期的
, 但发现 google-ads.yaml 文件错误 Python 3 - c - 无法解析标头中定义的 Eclipse C 常量
- jmeter - 我想知道我的服务器每秒可以处理多少个请求?
- hadoop - winutils和HBase是什么关系?
- angular - How to replace route parameters in active route
- javascript - 如何安全地从日期时间中提取时间 - 2019 年 8 月 5 日星期一 14:29:16 GMT+0530(印度标准时间)