我認爲我對命名空間和/或靜態變量存在根本的誤解。但我曾嘗試這個測試代碼(用手打字,原諒錯別字)如何在命名空間中使用變量
test.h:
namespace test{
static int testNum=5;
void setNum(int value);
}
main.cpp中:
#include <test.h>
int test::setNum(int value){
testNum=value;
}
int main(){
test::setNum(9);
cout<<test::testNum;
}
當我運行此我得到的值5 ,而不是我所預期的那樣。看起來好像我有兩個testNum變量的實例,但這似乎與靜態應該做的事情完全相反。我猜我犯了一個錯誤,認爲這些功能與他們的java equvilants完全相同......
我還得到一個錯誤,指出testNum聲明多次,如果我從我的聲明中刪除靜態testNum,有人可以解釋爲什麼這種情況呢?
謝謝
您知道'#include'的工作原理嗎?它複製粘貼指定文件的內容。 ''main.cpp'中的'setNum'定義是否也是如此? – Xeo 2012-07-13 20:53:01
我沒有顯示它,但是我在.h中有標準的ifNDEF DEF。此外,由於我只在整個程序中包含它*一次,它仍然不是一個問題嗎? – dsollen 2012-07-13 20:53:48
你使用'使用命名空間測試'嗎? – 2012-07-13 20:54:13