2013-05-14 51 views
0

我按照這些指令:靜態函數連接錯誤

is it possible to define the static member function of a class in .cpp file instead of its header file? http://www.exforsys.com/tutorials/c-plus-plus/c-plus-plus-static-functions.html

然而,我的例子給給我鏈接錯誤:

"Example::Value", referenced from: 
Example::PrintA()  in Text.o 
Example::PrintB()  in Text.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

這裏是我的Text.h文件:

class Example 
{ 

public: 

    static int Value; 

public: 

    static void PrintA(); 
    void PrintB(); 

}; 

我的Text.cpp文件:

void Example::PrintA() 
{ 

    cout << Value; 

} 

void Example::PrintB() 
{ 

    cout << Example::Value; 

} 

我如何解決這個問題,使我能夠打印來自PrintAPrintB價值?我在Mac OS X 10.6.8和Xcode 3.2上...

+0

您是否正確intialise靜態變量 – 999k 2013-05-14 04:59:00

+0

[把類的靜態成員定義爲CPP文件? - 技術限制]的可能重複(http://stackoverflow.com/questions/3409428/putting-class-static- members-definition-into-cpp-file-technical-limitation) – iammilind 2013-05-14 05:02:35

+0

@iammilind謝謝。剛纔我讀了這篇文章。 ^^如果我理解正確,我不僅需要聲明'static'變量,我還需要通過文件中要使用的初始化來告訴鏈接器。 – 2013-05-14 05:29:29

回答

3

定義cpp文件中的靜態變量。

​​
+0

非常感謝。有效! ^^我仍然非常重視如何正確使用'static',主要是爲了能夠利用get實例。 – 2013-05-14 05:08:31