2013-04-28 70 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