Возможный дубликат:
«Неопределенная ссылка на» в G ++ Cpp
У меня есть этот заголовок
#ifndef TEST_H_
#define TEST_H_
class TEST
{
public :
TEST();
};#endif /* TEST_H_ */
и этот заголовок
#ifndef TESTS_H_
#define TESTS_H_
#include "TEST.h"
class TESTS : public TEST
{
public :
TESTS();
};#endif /* TESTS_H_ */
Я реализовал эти заголовки так:
#include <iostream>
using namespace std;
#include "TEST.h"TEST:: TEST()
{
}
int main(int argc, char **argv) {
return 0;
}
и это:
#include "TESTS.h"
TESTS :: TESTS() : TEST()
{
}int main(int argc, char **argv) {
return 0;
}
и я получаю следующую ошибку:
/tmp/cc4jN1HN.o: в работе TESTS::TESTS()':
TEST :: TEST ()»
TESTS.cpp:(.text+0xd): undefined reference to
Почему это ?
Что я делаю неправильно ?
Это ошибка компоновщика. Вы, вероятно, не компилируете и не связываете все необходимые файлы. Это должно быть, например:
$ g++ -Wall TEST.cpp TESTS.cpp -o TEST
Вам также нужно избавиться от одной из функций main ().
Если предполагается, что это одна программа, она может иметь только одну main
функция. Если предполагается, что это две программы, то одна с TESTS::TESTS
в нем также нужен конструктор для TEST
,
Предполагая, что ваши два файла .cpp названы TEST.cpp и TESTS.cpp, я предполагаю, что вы просто компилируете первый, например, с помощью
g++ TESTS.cpp
но вам нужно собрать их вместе, например, с
g++ TEST.cpp TESTS.cpp
в противном случае TESTS.cpp не сможет найти код, определенный в TEST.cpp при компиляции.