未解决的外部符号,无法解决问题

时间:2013-10-15 07:32:00

标签: c++

您好我从下面的代码中收到此错误:

Error 4 error LNK2019: unresolved external symbol "public: __thiscall Noun::Noun(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0Noun@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z) referenced in function "public: __thiscall Dictionary::Dictionary(void)" (??0Dictionary@@QAE@XZ)

我想这个错误来自于没有声明构造函数Noun(string word, string definition);我也不确定如何声明这个以删除错误以便我可以编译我的代码。以下是我的代码。

2 个答案:

答案 0 :(得分:2)

链接器抱怨您没有为Noun的构造函数添加定义。添加它,这个错误将被修复。我相信你只是打算把父母的构造函数调用它,所以也许这样就可以了:

Noun(string word, string definition) : Word(word, definition) {}

答案 1 :(得分:0)

您可以定义构造函数

Noun(string word, string definition)

与使用类Word的构造函数完成相同的方式。 但是你需要确保在使用它时知道名词的定义。 Normaly,为此使用单独的头文件。类Noun的头文件的内容已经包含在您提供的代码中:它以

开头
class Noun : public virtual Word {

结束
};

将其移动到名为noun.h的头文件中,并通过

将其包含在cpp文件中
#include "noun.h"