0
我刚刚开始使用C++。我试图用C++编写一个简单的LinkedList。 但是我收到以下错误,因为我无法弄清楚为什么我无法使用链接对象*newLinkThree
调用成员函数printAll
。LinkedList实现C++错误指针间接寻址
main.cpp:40:16: error: member reference type 'Link *' is a pointer; maybe you
meant to use '->'?
*newLinkThree.printAll(newLinkThree);
~~~~~~~~~~~~^
->
main.cpp:40:3: error: indirection requires pointer operand ('void' invalid)
*newLinkThree.printAll(newLinkThree);
这是我的代码 -
#include <iostream>
using namespace std;
class Link {
char* value;
Link* next;
public:
Link(char* val, Link* nextLink) {
value = val;
nextLink = next;
}
~Link() {
value = NULL;
delete[] next;
}
void printAll(Link* top) {
if(top->next == NULL) {
cout<<top->value<<endl;
return;
}
cout<<top->value<<endl;
printAll(top->next);
}
};
int main() {
char* first = "First";
char* second = "Second";
char* third = "Third";
Link* newLink = new Link(first, NULL);
Link* newLinkTwo = new Link(second, newLink);
Link* newLinkThree = new Link(third, newLinkTwo);
*newLinkThree.printAll(newLinkThree);
return 0;
}
谢谢!我的printAll不是打印所有的三个值。由于某种原因,它仅印刷第三张。你能帮我解决吗? – Kek
@Kek呃,那是另一个问题。但在提出新问题之前,我建议您尝试调试并找出具体问题。如果仍然无法解决问题,请再次提出一个新问题。 – songyuanyao
@Kek一些问题:'nextLink = next;'应该是'next = nextLink;',在构造函数中。 delete []'应该是析构函数中的'delete'。 – songyuanyao