Я пытаюсь скомпилировать простую программу, которая использует наследование, и я бег в это:Неопределенная ссылка на наследование, makefile проблема?
g++ -g -Wall -c q1Test.cpp
g++ -g -Wall -c figure.cpp
g++ -g -Wall -c rectangle.cpp
g++ -g -Wall -c triangle.cpp
g++ -g -Wall -o shapes q1Test.o figure.o rectangle.o triangle.o
q1Test.o: In function `main':
/home/aryner/school/fall2013/csc340/hw9/Q1/q1Test.cpp:11: undefined reference to `Figure::center()'
/home/aryner/school/fall2013/csc340/hw9/Q1/q1Test.cpp:16: undefined reference to `Figure::center()'
collect2: ld returned 1 exit status
make: *** [shapes] Error 1
Поиска этой ошибки приводит меня к мысли, у меня есть проблема с моей Makefile, но я полностью потерял, как к чему то проблема может быть. Я сравнил свой файл makefile с некоторыми, которые я нашел в Интернете, и я не понимаю, почему мой не должен работать. Вот Makefile я использую:
CC = g++
CFLAGS = -g -Wall
default: shapes
shapes: q1Test.o figure.o rectangle.o triangle.o
$(CC) $(CFLAGS) -o shapes q1Test.o figure.o rectangle.o triangle.o
figure.o: figure.cpp figure.h
$(CC) $(CFLAGS) -c figure.cpp
rectangle.o: rectangle.cpp rectangle.h
$(CC) $(CFLAGS) -c rectangle.cpp
triangle.o: triangle.cpp triangle.h
$(CC) $(CFLAGS) -c triangle.cpp
q1Test.o: q1Test.cpp figure.h rectangle.h triangle.h
$(CC) $(CFLAGS) -c q1Test.cpp
clean:
$(RM) shapes *.o *~
Я не хочу, чтобы получить возможность отправлять исходные файлы, потому что это домашнее задание, но я дам краткое описание. Рисунок представляет собой суперкласс для прямоугольника и треугольника. Прямоугольник и треугольник должны наследовать центр() от рисунка. q1Test - это тестовая программа, которая проверяет все функции в треугольнике и прямоугольнике, центр - единственная проверенная функция, которая унаследована от фигуры и не перегружена.
Для быстрой проверки попробуйте переместить 'q1Test.o' после' figure.o' в свои правила 'forms:'. – slugonamission
Кроме того, проверка работоспособности (хотя нарушение этого приведет к еще одному предупреждению ...), 'center()' * does * имеет реализацию в 'Figure', не так ли? – slugonamission