0

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

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);我也不确定如何声明它以删除错误,以便我可以编译我的代码。下面是我的代码。

4

2 回答 2

2

链接器抱怨您没有为Noun. 添加它,此错误将得到修复。我相信您只是想在其中调用父级的构造函数,所以也许这可以完成工作:

Noun(string word, string definition) : Word(word, definition) {}
于 2013-10-15T07:33:38.427 回答
0

您可以定义构造函数

Noun(string word, string definition)

与您对类的构造函数所做的完全一样Word。但是您需要确保在使用名词时知道名词的定义。通常,为此使用一个单独的头文件。类的头文件的内容Noun已经包含在您提供的代码中:它以

class Noun : public virtual Word {

并以

};

将其移动到名为 noun.h 的头文件中,并将其包含在您的 cpp 文件中

#include "noun.h"
于 2013-10-15T07:40:55.387 回答