c++ - extern是否破坏封装

标签 c++ c qt oop extern

我是 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/

相关文章:

c++ - CMake add_library(<lib> OBJECT <src>) 有环境变量吗?

c++ - vb.net 和 c++/clr 数组长度

C:函数跳过代码中的用户输入

c - 文件的移位加密和解密 - 代码无法正常工作

c++ - 在c++中使用x64系统和x86应用程序分配大内存

c++ - 如何避免使用特征类违反 ODR

c++ - Android Studio 3.3 (NDK) 上的错误警告

c - 使用结构在C中解析数据包

c++ - 使用 QtConcurrent 使用 QImageReader 读取图像文件

c++ - Qt - 清除 QTableView 的内容