указатели — C ++ не может преобразовать тип * const в тип * & amp;

Я застрял, пытаясь найти решение для сообщения об ошибке, которое я получал, когда пытался передать указатель закрытого объекта из 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 передавался правильно?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]