c++ - 如何在文件之间共享全局类实例?
问题描述
我有一个类 myClass,它被分成一个 .h 和 .cpp 文件。然后我有一个 main.cpp 文件,我在其中声明了一个 myClass 的全局实例
myClass class1(0,0);
我还有其他一些使用 class1 的 cpp 文件,例如 Funcs.cpp。因此,我创建了一个外部文件 extern.h,并将 myClass 实例也声明为 extern:
extern myClass class1;
myClass 有两个可用的构造函数,一个接受两个参数,另一个接受三个(重载)。没有不接受参数的构造函数。有两个参数的构造函数是这样的:
myClass:myClass(int id, int mode);
我的问题是我收到以下错误消息:
标识符 myClass 未定义“extern myClass class1”
...即使我在 main.cpp、myClass.cpp 和 extern.h 中都包含了 myClass.h。
在多个 cpp 文件之间共享 myClass 的全局实例的正确方法是什么?我通读了声明外部类对象的问题,不同之处在于 myClass 有两个参数,并且我的全局实例是在 main.cpp 而不是 myClass.cpp 中声明的。
解决方案
问题可能是包含文件的顺序。编译器逐行可靠地处理每个编译单元,包括 .h 文件位置的 .h 文件内容#include
。
这意味着您必须在 extern.h 之前包含 myclass.h:
#include "myclass.h"
#include "extern.h"
推荐阅读
- odoo - 如何通过代码创建发票和发票行 - Odoo13
- c++ - Boost Spirit x3 - 惰性解析器
- android-studio - 如何在 Android Studio 中显示参数提示?
- swift - 如何在快速关闭呈现的控制器后推送控制器?
- rust - 如何在 Cargo 构建脚本中使用外部 crate?
- python - 在 Django 中使用模型方法的自定义模型管理器
- flutter - 在 Flutter 中序列化特殊字符
- scala - 如何更新作为主地图键值的可变地图的值?
- java - 面临异常:org.openqa.selenium.NoSuchSessionException:会话已终止或未启动站点:stackoverflow.com
- python - 如何使用 OpenCV python 获取对象的大小?