在不同 类 中对同名全局变量进行双重初始化

Dual initialization of same name global variable in different classes

我用谷歌搜索了自己,但我还没有完全找到我想要的答案!

我使用 JNI 实现了一些 MATLAB 生成的代码。因为我需要同时运行它两次,所以我实现了这个class基础,然后初始化了这个class的两个实例。

但是,它们确实包含很多全局变量初始化,所以当我以这种方式使用它时,两个实例的输出都是完全错误的,我无法解释自己为什么(我用 matlab 检查了实施)。

然后我将相同的解决方案实现为单独的库,没有错误。

我现在想知道为什么其他实现不起作用。 在 C++ 中,省略 static 不会自动暗示外部定义,对吗?

两个 class 实例是否会引用相同的变量,即使它们应该在单独的实例中初始化?

很抱歉,如果这是一个脑残问题,我问的是一些明显的问题,我在学士论文的最后一周,我的大脑被炸了!

谢谢!

编辑:当然,代码:

基本上是这样的:

ClassName* ClassName::p_ClassName //Definition in Header

ClassName::ClassName(){


{

ClassName::~ClassName
{
   p_ClassName = NULL;

}


GlobalVariable variableName;


ClassName::funktion(){

variableName = value;

}

是的,省略 static 确实意味着函数或变量是全局的(但不一定跨库导出)。

参见例如http://www.cplusplus.com/doc/tutorial/namespaces/