неопределенная ссылка на базовый конструктор

Возможный дубликат:
«Неопределенная ссылка на» в 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()':
TESTS.cpp:(.text+0xd): undefined reference to
TEST :: TEST ()»

Почему это ?

Что я делаю неправильно ?

1

Решение

Это ошибка компоновщика. Вы, вероятно, не компилируете и не связываете все необходимые файлы. Это должно быть, например:

$ g++ -Wall TEST.cpp TESTS.cpp -o TEST

Вам также нужно избавиться от одной из функций main ().

6

Другие решения

Если предполагается, что это одна программа, она может иметь только одну main функция. Если предполагается, что это две программы, то одна с TESTS::TESTS в нем также нужен конструктор для TEST,

1

Предполагая, что ваши два файла .cpp названы TEST.cpp и TESTS.cpp, я предполагаю, что вы просто компилируете первый, например, с помощью

g++ TESTS.cpp

но вам нужно собрать их вместе, например, с

g++ TEST.cpp TESTS.cpp

в противном случае TESTS.cpp не сможет найти код, определенный в TEST.cpp при компиляции.

0
По вопросам рекламы [email protected]