【发布时间】:2011-10-05 17:53:12
【问题描述】:
我的 fileType.h 中有这段代码。
class FileType{
private:
School* m_school;
string m_fileFormat;
const string m_cfgFile;
const string m_inputFile;
public:
FileType(string p_fileFormat, string p_cfgFile, string p_inputFile):
m_fileFormat(p_fileFormat), m_cfgFile(p_cfgFile), m_inputFile(p_inputFile) {};
virtual bool parseInputFile();
virtual bool writeOutputFile(const School& m_school);
virtual bool checkFormat(); // TBD -- used to check the format of the input file
virtual bool checkConstraints(); // TBD -- used to check things like only +ve 12 digit in the ID etc
virtual ~FileType();
};
class XmlType:public FileType{
public:
XmlType(string p_fileFormat, string p_cfgFile, string p_inputFile):
FileType(p_fileFormat, p_cfgFile, p_inputFile) {};
virtual bool parseInputFile();
virtual bool writeOutputFile(const School& m_school);
virtual bool checkFormat(); // TBD -- used to check the format of the input file
virtual bool checkConstraints(); // TBD -- used to check things like only +ve 11 digit in the ID etc
};
class CsvType:public FileType{
public:
CsvType(string p_fileFormat, string p_cfgFile, string p_inputFile):
FileType(p_fileFormat, p_cfgFile, p_inputFile) {};
virtual bool parseInputFile();
virtual bool writeOutputFile(const School& m_school);
virtual bool checkFormat(); // TBD -- used to check the format of the input file
virtual bool checkConstraints(); // TBD -- used to check things like only +ve 11 digit in the ID etc
};
在我的主要内容中:
#include "fileType.h"
FileType *inputFilePtr, *outputFilePtr;
string stringOne, stringTwo, stringThree;
inputFilePtr = new CsvType(stringOne, stringTwo, stringThree);
现在我的链接器告诉我我不知道构造函数的符号:
/cygdrive/c/Users/Owner/AppData/Local/Temp/cclieUAi.o:main.cpp:(.text$_ZN7CsvTypeC1ESsSsSs[CsvType::CsvType(std::basic_string, std::allocator >, std: :basic_string, std::allocator >, std::basic_string, std::allocator >)]+0x1bf): 未定义对 vtable for CsvType'
/cygdrive/c/Users/Owner/AppData/Local/Temp/cclieUAi.o:main.cpp:(.text$_ZN8FileTypeC2ESsSsSs[FileType::FileType(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)]+0x3a): undefined reference tovtable 的 FileType 引用
collect2: ld 返回 1 个退出状态
我尝试用两个整数创建一个虚拟构造函数,但什么也不做。那行得通,但是一旦我放了字符串,就失败了。知道有什么问题吗?
【问题讨论】:
标签: c++ linker undefined vtable