Неразрешенный внешний символ, который пытается исправить

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); Я также не уверен, как я могу объявить об этом, чтобы удалить ошибку, чтобы я мог скомпилировать свой код. Ниже мой код.

Теги:

2 ответа

2
Лучший ответ

Компилятор жалуется, что вы еще не добавили определение для конструктора Noun. Добавьте его, и эта ошибка будет исправлена. Я считаю, что вы имеете в виду только назвать родительский конструктор, поэтому, возможно, это выполнит эту задачу:

Noun(string word, string definition) : Word(word, definition) {}
  • 0
    Я не знаю, где добавить это ...?
  • 0
    @ user2881555 замените строку, в которой вы объявляете конструктор строки, этой строкой. Это поможет вам найти объявление и определение метода, а также объявление / определение конструктора в Google.
Показать ещё 1 комментарий
0

Вы можете определить конструктор

Noun(string word, string definition)

точно так же, как вы это делали с конструктором класса Word. Но вам нужно убедиться, что определение существительного известно, когда вы его используете. Нормальный, для этого используется отдельный файл заголовка. Содержимое header файла для класса Noun уже содержится в коде, который вы указали: он начинается с

class Noun : public virtual Word {

и заканчивается

};

Переместите это в заголовочный файл с именем noun.h и включите его в свой cpp файл через

#include "noun.h"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню