簡體   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