繁体   English   中英

如何为新结构分配内存?

[英]How to allocate memory for new structure?

我正在尝试在类的构造函数中为新的链表分配内存,但是当我尝试对其进行编译时,会收到一些奇怪的消息。

struct Node {
  Song s;
  Node *next = NULL;
};


tsuPod::tsuPod(int songs, int size)
{
  MAX_SONGS = songs;
  MAX_MEM   = size;
  memory = 0;
  Node *list = new Node; // call to implicitly deleted default constructor of Node
}

似乎这应该是一个相对较快的响应,因为我猜想我缺少了c++某些关键内容,并不一定会导致语法错误。 老实说,我什至不知道结构可以有构造函数,但显然它们可以。 无论如何,如果有人可以快速告诉我出了什么问题或为什么这样说,那么您真棒! 谢谢!

当你没有为提供任何构造Node ,默认构造Node将被编译器提供。 但是,当尝试这样做时,便遇到了一个问题:要(默认)构造一个Node ,您首先需要构造一个Song 出于以下三个原因之一,可能无法创建Song

  1. Song所有构造函数都带有一个或多个参数,而您没有为其提供默认值。
  2. 显式删除了默认构造函数: Song() = delete
  3. 有一个默认的构造函数,它是私有的。

这就是为什么错误消息还指出默认构造函数被隐式删除的原因。 您现在可以排除选项#2和#3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM