我试图在类的构造函数中为新的链表分配内存,但是当我尝试编译它时,我得到了一些奇怪的消息。
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++
的关键字,并且不一定会产生语法错误。说实话,我甚至不知道结构可能有构造函数,但显然它们可以。无论如何,如果有人能够快速告诉我什么是错的,或者为什么它会说你会很棒!谢谢!
答案 0 :(得分:0)
由于您没有为Node
提供任何构造函数,Node
的默认构造函数将由编译器提供。但是当它试图这样做时,它遇到了一个问题:要(默认)构造一个Node
,首先需要构造一个Song
。由于以下三个原因之一,创建Song
是不可能的:
Song
的所有构造函数都接受一个或多个参数,并且您没有为它们提供默认值。Song() = delete
。 这就是为什么错误消息还指出默认构造函数隐式已删除;你现在可以排除选项#2和#3。