Привет, я получаю эту ошибку из моего кода ниже:
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);
Я также не уверен, как я могу объявить об этом, чтобы удалить ошибку, чтобы я мог скомпилировать свой код. Ниже мой код.
Компилятор жалуется, что вы еще не добавили определение для конструктора Noun
. Добавьте его, и эта ошибка будет исправлена. Я считаю, что вы имеете в виду только назвать родительский конструктор, поэтому, возможно, это выполнит эту задачу:
Noun(string word, string definition) : Word(word, definition) {}
Вы можете определить конструктор
Noun(string word, string definition)
точно так же, как вы это делали с конструктором класса Word
. Но вам нужно убедиться, что определение существительного известно, когда вы его используете. Нормальный, для этого используется отдельный файл заголовка. Содержимое header файла для класса Noun
уже содержится в коде, который вы указали: он начинается с
class Noun : public virtual Word {
и заканчивается
};
Переместите это в заголовочный файл с именем noun.h и включите его в свой cpp файл через
#include "noun.h"