我是来自C++背景的Python新手.虽然我知道尝试使用我的旧C++知识找到匹配的概念并不是Pythonic,但我认为这个问题仍然是一个普遍的问题:
在C++下,有一个众所周知的问题叫做全局/静态变量初始化命令惨败,因为C++无法决定哪个全局/静态变量首先在编译单元中初始化,因此全局/静态变量取决于另一个编译单元单元可能早于其依赖对应物初始化,并且当依赖开始使用依赖对象提供的服务时,我们将有未定义的行为.在这里,我不想深入了解C++如何解决这个问题.:)
在Python世界中,我确实看到全局变量的使用,甚至跨越不同的.py文件,我看到的一个典型用例是:在一个.py文件中初始化一个全局对象,在其他.py文件中,代码无所畏惧开始使用全局对象,假设它必须已经在其他地方初始化,由于我上面指出的问题,在C++下我自己肯定不会接受.
我不确定上述用例是否是Python(Pythonic)中的常见做法,以及Python如何解决这种全局变量初始化顺序问题?
非常感谢你!
林
我正在尝试学习如何在 C++ 中创建类,其中使用头文件、包含类函数定义的 .cpp 文件和主 .cpp 文件。这是我所拥有的(取自示例)
在类.h中
class MyClass
{
public:
void foo();
int bar;
};
Run Code Online (Sandbox Code Playgroud)
在类.cpp中
#include "class.h"
using namespace std;
void MyClass::foo()
{
cout<< "test";
}
Run Code Online (Sandbox Code Playgroud)
在main.cpp中
#include "class.h"
using namespace std;
int main()
{
MyClass a;
a.foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译 main.cpp 会导致以下错误: [链接器错误] C:\:(.text+0x16): undefined reference to `MyClass::foo()'collect2: ld returned 1 exit status
我需要编译class.cpp或class.h吗?我是否缺少将 class.h 与 class.cpp 链接的方法?如果是这样我该如何链接它们?