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

时间:2015-07-02 13:33:18

标签: java android c++ matlab java-native-interface

我用谷歌搜索了自己,但我还没有找到我追求的答案!

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

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

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

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

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

对不起,如果这是一个脑力激荡,而且我要问一些显而易见的事情,我在学士论文的最后一周,我的脑子已经被炒了!

谢谢!

编辑:当然,代码:

基本上看起来像这样:

ClassName* ClassName::p_ClassName //Definition in Header

ClassName::ClassName(){


{

ClassName::~ClassName
{
   p_ClassName = NULL;

}


GlobalVariable variableName;


ClassName::funktion(){

variableName = value;

}

1 个答案:

答案 0 :(得分:0)

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

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