2014-09-19 31 views
0

我有以下classA.h編譯C時,遇到了一個未解決的外部符號++類

#ifndef ClassAH 
#define ClassAH 
class A 
{ 
public : 
     A(); 
    ~A(); 
     static std::map< std::string, std::vector<string> > getSomething(); 
} 
#endif 

和classA.cpp

#include classA.h 

std::map< std::string, std::vetor<string> > classA::getSomething() 
{ 
    //implementation 

    return map 
} 

現在我有另一個類classB.cpp實施中我在做:

#include classA.h 
void method1() 
{ 
    std::map< std::string, std::vector<string> > map = classA::getSomething(); 
} 

注意getSomething()是靜態的。

當我編譯classB 我得到了方法getSomething()說錯誤LNK2019說無法解析的外部符號....在method1()引用。

這裏怎麼回事?

回答

0

in classA.cpp你剛剛聲明瞭全局函數。您必須在定義A::

std::map< std::string, std::vector<string> > A::getSomething() 
{ 
    return map; 
} 

這樣編譯器知道getSomething()屬於類方法A

+0

我其實包括A ::在我的定義,(我忘了在我原來的職位,現在我編輯問題),但仍然得到錯誤,當我在classB.cpp – SomeDude 2014-09-19 20:08:16

+0

中調用這個錯誤時,你的類是'A',但是在你輸入classA :: – 2014-09-19 20:13:31

+0

的代碼中,沒關係我解決了它。我不得不修改一個定義文件。謝謝。 – SomeDude 2014-09-19 22:20:38