在不同 类 中对同名全局变量进行双重初始化
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
确实意味着函数或变量是全局的(但不一定跨库导出)。
我用谷歌搜索了自己,但我还没有完全找到我想要的答案!
我使用 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
确实意味着函数或变量是全局的(但不一定跨库导出)。