簡體   English   中英

在不同類中對相同名稱的全局變量進行雙重初始化

[英]Dual initialization of same name global variable in different classes

我用這個在谷歌上搜索死了,但是我還沒有找到我想要的答案!

我使用JNI實現了一些MATLAB生成的代碼。 因為我需要同時運行兩次,所以我基於該類實現了該類,然后初始化了該類的兩個實例。

但是,它們確實包含許多全局變量初始化,因此當我以這種方式使用它時,兩個實例的輸出都完全是錯誤的,並且我無法解釋自己的原因(我檢查了matlab的實現)。

然后,我實現了與單獨的庫相同的解決方案,該庫可以正常工作。

我現在想知道為什么其他實現不起作用。 在C ++中,省略static不會自動暗示一個外部定義,不是嗎?

即使兩個類實例都應該在單獨的實例中初始化,它們是否也會引用相同的變量?

抱歉,這是不是讓我感到困惑,我想問一個明顯的問題,我在我的學士學位論文的最后一周,我的大腦被炸了!

謝謝!

編輯:當然,代碼:

基本上看起來像這樣:

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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM