Я застрял, пытаясь найти решение для сообщения об ошибке, которое я получал, когда пытался передать указатель закрытого объекта из WordTree в рекурсивный массив внутри моего << функция перегрузки.
Заголовок:
struct WordNode
{
unsigned int count;
std::string word;
WordNode* left;
WordNode* right;
};
class WordTree
{
public:
WordTree() : root(nullptr) {};
~WordTree();
friend std::ostream& operator <<(std::ostream&, const WordTree&);
void intorder(std::ostream&, const WordNode*); //Removed & from WordNode*
private:
WordNode* root;
};
CPP:
void intorder(ostream&, const WordNode*); //Was missing from original code
ostream& operator <<(ostream& ostr, const WordTree& tree)
{
intorder(ostr, tree.root);
return ostr;
}
void WordTree::intorder(ostream& o, const WordNode* ptr) //Removed & from WordNode* for this example
{
if(ptr == nullptr)
return;
intorder(o, ptr->left);
o << ptr->word << " " << ptr->count << "\n";
intorder(o, ptr->right);
}
Ошибка:
Error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl intorder(class std::basic_ostream<char,struct std::char_traits<char> > &,struct WordNode *)" (?intorder@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV12@PAUWordNode@@@Z) referenced in function "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class WordTree const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVWordTree@@@Z)
Error LNK1120: 1 unresolved externals //The exe file
Как мне реализовать мой код, чтобы ptr, обращающийся к членам данных, работал, и в то же время следил за тем, чтобы корень моего WordTree передавался правильно?
Задача ещё не решена.
Других решений пока нет …