【发布时间】:2011-06-30 03:27:45
【问题描述】:
我遇到了编译问题。以下是文件和继承。
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类
以下是继承和has-the关系。
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 格式化了前两段。抱歉格式错误。
标签: c++ inheritance makefile undefined-symbol