我是 C++ 的新手,我正在创建游戏。我有一个名为 main 的类,我在其中声明
Game * game; //globally
int main() {
game = new Game();
game->show();
}
我的类游戏启动我的游戏等。现在在其他类(玩家、敌人等)中,我使用游戏访问变量,例如玩家健康
#include<game.h>
extern Game * game;
func::func() {
game->health->resetHealth();
}
这是否打破了封装/ood 范式?这是不好的做法吗?问题是我可以看到任何其他为游戏做这件事的方法。
最佳答案
是的,extern
破坏了封装。封装的主要概念是数据隐藏和绑定(bind)单个实体中对象的属性和行为。
将变量设置为 extern
会违反法律。
在一些更高级的OOP
语言如java
中,没有extern
。在 Java 中,它总是建议将属性/字段设为私有(private)以限制其访问。
关于c++ - extern是否破坏封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29240578/