【发布时间】:2020-02-10 08:42:59
【问题描述】:
我似乎无法将值输入到我已经声明的结构中。我不确定这是语法错误还是逻辑错误。
我已经尝试过更改语法,但总是以同样的错误告终。
struct Book{
string title;
Book* next;
};
Book bookName;
Book author;
Book* add_node(Book* in_root){
cout <<"Enter Book name \n";
cin >> bookName.title;
cout << "Enter author name \n";
cin >> author;
author = new Book();
Book -> Book.next = author;
}
这部分代码遇到错误:
cout << "Enter author name \n";
cin >> author;
author = new Book();
Book -> Book.next = author;
【问题讨论】:
-
添加新节点时应该类似于
next = new Book(); cin >> next->title;。 -
@Habitate 是的,谢谢你修复了很多语法错误,但是它说变量
next没有声明,我不确定我应该准确地给出什么类型。跨度> -
只是一些注意事项...... 1)为什么
author在 Book 结构之外,2)add_node似乎没有返回任何内容,3)我建议使用智能指针而不是new,因为您需要声明使用new创建的destructor和delete对象。 -
@ignacio 我想将所有内容存储在动态内存中,这就是我将 next 声明为指针的原因。另外,虽然我没有包含它,但我会有另一个函数
void delete_list(Book* in_root)用于删除所有分配的内存。
标签: c++ struct dynamic heap-memory dynamic-memory-allocation