2013-04-28 66 views
0

我有一個類A(具有A.H和a.cpp文件),其中我進口到main.cpp中。我創建了一個類的對象,試圖訪問類的方法得到了一個未定義參考`A ::復位(unsigned int的*,無符號整型*)」。問題導入C++

我不知道什麼是錯在我的代碼

//啊

#ifndef _A_H_ 
#define _A_H_ 

class A 
{ 

    public: 

     A(); 
     void Reset(); 
}; 
#endif 

//a.cpp:

#include "A.h" 

A::A() 
{ 

    Reset(); 
} 


void A::Reset() 
{ 

} 

//main.cpp

#include "A.h" 
int main(int argc, const char * argv[]) 
{ 

    A *aObj = new A; 
    aObj->Reset(); 
} 

任何幫助,將不勝感激。

+1

它是'A * aObj = new A;'。 'new'返回指針。 – Elazar 2013-04-28 07:14:07

+1

'_A_H_'是[衰](http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier)。 – chris 2013-04-28 07:32:34

+0

你正在使用什麼編譯命令?而「導入」不是C++的正確寫法...... – 2013-04-28 11:20:10

回答

1

首先,在構建可執行文件時,需要編譯並鏈接A.cppmain.cpp。例如:

g++ -o main A.cpp main.cpp 

至於失蹤compare()功能,確保它宣佈A.h

class A { 
    ... 
    int compare(unsigned int*, unsigned int*); 
} 

A.cpp定義:

int A::compare(unsigned int*, unsigned int*) { 
    ... 
} 
+0

他並不需要包括a.cpp文件 – 2013-04-28 07:20:16

+0

對不起,這是一個錯誤的味精。我更新了它。 – pa12 2013-04-28 07:44:42

+0

它應該是'G ++ -g -Wall a.cpp的main.cpp -o main' – 2013-04-28 11:20:53

3

糾正你的main.cpp文件因爲這樣:

#include "a.h" 

int main(int argc, const char * argv[]) 
{ 

    A *aObj = new A; 
    aObj->Reset(); 

/* 
or 
    A aObj; 
    aObj.Reset() 
*/ 
} 
+0

對不起,這是一個複製錯誤。我有一顆明星。 – pa12 2013-04-28 07:46:19