#include <iostream>
#include <string>
using namespace std;
class Person{
private:
string name;
int age, height, weight;
public:
Person(string name = "empty", int age = 0, int height = 0, int weight = 0) {
this->name = name;
this->age = age;
this->height = height;
this->weight = weight;
}
};
class Node {
public:
Person* data;
Node* next;
Node(Person*A) {
data = A;
next = nullptr;
}
};
class LinkedList {
public:
Node * head;
LinkedList() {
head = nullptr;
}
void InsertAtHead(Person*A) {
Node* node = new Node(A);
node->next = head;
head = node;
}
void Print() {
Node* temp = head;
while (temp != nullptr) {
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
};
int main() {
LinkedList* list = new LinkedList();
list->InsertAtHead(new Person("Bob", 22, 145, 70)); list->Print();
}
当我运行Print方法时,我的代码将打印存储Person的内存位置。我尝试用调试器运行代码,但我仍然感到困惑,我是C ++的新手,只有大学生。我猜这与我的印刷类和专线有关&#34; cout&lt;&lt; temp-&gt; data&lt;&lt; &#34; &#34 ;;&#34;但我不是百分百肯定。有人可以解释如何解决这个问题以及为什么它会起作用?提前谢谢!
答案 0 :(得分:2)
{"0"^^xsd:int , "1"^^xsd:int , "10"^^xsd:int , "18"^^xsd:int , "2"^^xsd:int , "3"^^xsd:int , "4"^^xsd:int , "5"^^xsd:int , "6"^^xsd:int , "8"^^xsd:int}
的类型为Node::data
。
Person*
只打印一个指针。
如果要打印对象,则必须使用:
cout << temp->data << " ";
但是,在使用它之前,您必须定义一个支持该操作的函数重载。使用以下签名定义函数:
cout << *(temp->data) << " ";
答案 1 :(得分:0)
要打印指针的值,您需要使用*
取消引用它。
因此,您需要使用std::cout << *(temp->data);
才能获得data
Person*
的值。
更多关于dereferencing pointers的信息。
答案 2 :(得分:0)
temp->data
解析为Person指针。要解决此问题,您可以在Person指针(即对象)上调用一个返回字符串