2013-04-28 2 views
0

У меня есть класс A (есть файл a.h и a.cpp), который я импортирую в main.cpp. Я создал объект класса A и пытаюсь получить доступ к методам в классе. Я получаю неопределенную ссылку на «A :: Reset (unsigned int *, unsigned int *)».проблемы с импортом C++ class

Я не уверен, что случилось в моем коде

// ах

#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 = новый A;'. 'new' возвращает указатель. – Elazar

+1

'_A_H_' [плохо] (http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier). – chris

+0

Какие команды компиляции вы используете? И «import» - неправильная формулировка для C++ .... –

ответ

1

Прежде всего, вам необходимо скомпилировать и связать как A.cpp, так и main.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 –

+0

Извините, что это был неправильный msg. Я обновил его. – pa12

+0

Это должно быть 'g ++ -g -Wall a.cpp main.cpp -o main' –

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

Смежные вопросы