代码是打印对象的内存位置,而不是对象本身 #包括 #包括 使用名称空间std; 班主任{ 私人: 字符串名; 年龄、身高、体重; 公众: Person(string name=“empty”,整数年龄=0,整数身高=0,整数体重=0){ 此->名称=名称; 这个->年龄=年龄; 这个->高度=高度; 这个->重量=重量; } }; 类节点{ 公众: 个人*数据; 节点*下一步; 节点(人*A){ 数据=A; next=nullptr; } }; 类链接列表{ 公众: 节点*头; LinkedList(){ 水头=零PTR; } 无效插入符(人*A){ 节点*节点=新节点(A); 节点->下一步=头部; 头部=节点; } 作废打印(){ 节点*温度=头部; while(temp!=nullptr){ 下一步是收集数据; } cout insertatead(新人物(“Bob”,22,145,70));列表->打印(); } 当我运行打印方法时,我的代码将打印存储人的内存位置。我试图用调试器运行代码,但我仍然困惑,我是C++新手,只是一个大学生。我猜这与我的打印类和具体的行有关。“cout data

代码是打印对象的内存位置,而不是对象本身 #包括 #包括 使用名称空间std; 班主任{ 私人: 字符串名; 年龄、身高、体重; 公众: Person(string name=“empty”,整数年龄=0,整数身高=0,整数体重=0){ 此->名称=名称; 这个->年龄=年龄; 这个->高度=高度; 这个->重量=重量; } }; 类节点{ 公众: 个人*数据; 节点*下一步; 节点(人*A){ 数据=A; next=nullptr; } }; 类链接列表{ 公众: 节点*头; LinkedList(){ 水头=零PTR; } 无效插入符(人*A){ 节点*节点=新节点(A); 节点->下一步=头部; 头部=节点; } 作废打印(){ 节点*温度=头部; while(temp!=nullptr){ 下一步是收集数据; } cout insertatead(新人物(“Bob”,22,145,70));列表->打印(); } 当我运行打印方法时,我的代码将打印存储人的内存位置。我试图用调试器运行代码,但我仍然困惑,我是C++新手,只是一个大学生。我猜这与我的打印类和具体的行有关。“cout data,c++,object,linked-list,C++,Object,Linked List,节点的类型::data是Person* #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) {

节点的类型::data是
Person*

#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();
}

Node::data
的类型是
Person*

#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();
}

要打印指针的值,需要使用
*
解除对它的引用

因此,您需要使用
std::cout data);
来获取
data
的值,这是一个
Person*


更多关于。

为了打印指针的值,您需要使用
*
解除对它的引用

因此,您需要使用
std::cout data);
来获取
data
的值,这是一个
Person*


更多关于。

temp->data
和cout-resolves-to-Person指针。若要解决此问题,您可以在Person指针(即对象)上调用一个方法,该方法将返回字符串
temp->data
和cout-resolves-to-Person指针。若要解决此问题,您可以在Person指针(即对象)上调用一个方法这将返回一个字符串

请看,请看,好的,第一部分对我有意义,但我对函数重载感到困惑。为什么必须这样做?是否有其他链接可以参考我如何做得更好?谢谢!@Fall0ut,浏览上的答案。希望它会有所帮助。好的,第一部分对我有意义,但我感到困惑请删除函数重载。为什么必须这样做?是否有其他链接可以参考我如何更好地执行此操作?谢谢!@Fall0ut,请浏览上的答案。希望这会有所帮助。
cout << *(temp->data) << " ";
std::ostream& operator(std::ostream& out, Person const& person)
{
   // Print the details of person.

   // Return the same ostream object
   return out;
}