2014-02-26 50 views
4

這是我的類定義:解析的外部符號 「私人:靜態INT數學::結果」

#include <iostream> 

using namespace std; 

class Math 
{ 
private: 
    static int result; 

public: 
    static int add(int a , int b) 
    { 
     result = a + b ; 
     return result; 
    }; 
}; 

這是主要的:

#include <iostream> 
#include "Amin.cpp" 

using namespace std; 

int main() 
{ 
    Math::add(2,3); 
} 

和我得到了這些錯誤visual studio:

錯誤LNK2001:無法解析的外部符號「private:static int Math :: result」 錯誤LNK1 120:1無法解析的外部

問候

+0

這已被問及許多次。請先查詢。 –

回答

7

只是在你cpp文件中添加

int Math::result; 

Math::resultMath的定義中聲明爲static數據變量,應在某處定義。這可以是cpp文件,其中包含main()或任何其他鏈接器可以找到的文件。您無需也不應該在定義處重複關鍵字static

順便說一下,您應該避免在頭文件中使用using namespace std;(或任何其他名稱空間)。

2

你已經在你的Math類有一個靜態變量。你需要爲它提供一個定義。要做到這一點,你可以添加:

int Math::result; 

到您的.cpp文件

+0

我有兩個cpp文件,我應該把它放在哪裏,我應該把它放在裏面? –

+0

要麼你只需要把它放在一個,不能超過一個。 – Sean