我有一個編譯問題。以下是文件和繼承。繼承makefile C++未定義符號第一次參考
dateType.h,dateTypeImp.cpp:定義和實現dateType類
addressType.h,addressTypeImp.cpp:定義和實現的AddressType類
personType.h,personTypeImp.cpp:定義和實現personType類
extPersonType .H,extPersonTypeImp.cpp:定義和實現extPersonType類
addressBookType.h,addressBookTypeImp.cpp:定義和實現addressBookType類
以下是繼承和具有-的關係。
extPersonType「擴展」(繼承)personType類,它也「有」每個addressType和dateType的一個對象。
addressBookType類「有」500個類型爲extPersonType的對象。
(我可以在需要的情況下複製粘貼.h文件)
因此,extPersonType.h在其中包含「dateType.h」,「addressType.h」,「personType.h」的#include語句。 addressBookType.h包含#include「extPersonType.h」。
我有下面的Makefile:
all: main
personTypeImp.o: personTypeImp.cpp
g++ -c -Wall personTypeImp.cpp
dateTypeImp.o: dateTypeImp.cpp
g++ -c -Wall dateTypeImp.cpp
addressTypeImp.o: addressTypeImp.cpp
g++ -c -Wall addressTypeImp.cpp
addressBookTypeImp.o: addressBookTypeImp.cpp
g++ -c -Wall addressBookTypeImp.cpp
main.o: main.cpp
g++ -c -Wall main.cpp
main: main.o addressBookTypeImp.o addressTypeImp.o dateTypeImp.o personTypeImp.o
g++ -Wall main.o addressBookTypeImp.o addressTypeImp.o dateTypeImp.o personTypeImp.o -o main
clean:
rm -f *.o *~ main
所有的.o線沒有出現任何錯誤。最後一個「主」編譯給出了這個錯誤:
make
g++ -c -Wall main.cpp
g++ -c -Wall addressBookTypeImp.cpp
g++ -c -Wall addressTypeImp.cpp
g++ -c -Wall dateTypeImp.cpp
g++ -c -Wall personTypeImp.cpp
g++ -Wall main.o addressBookTypeImp.o addressTypeImp.o dateTypeImp.o personTypeImp.o -o main
Undefined first referenced
symbol in file
extPersonType::getStatus() const addressBookTypeImp.o
extPersonType::isLastName(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) constaddressBookTypeImp.o
列出了extPersonType的更多功能。
想知道什麼可能是錯誤。
請莫名其妙地重新格式化第2段。這很難遵循。 –
@Caron格式化了前兩個段落。抱歉格式不正確。 – Romonov