簡體   English   中英

在C ++中將對象傳遞給另一個類的構造函數時遇到問題

[英]Having trouble passing an object into the constructor of another class in C++

我不能為我的生活解決為什么這不起作用...無法編譯,不斷收到錯誤“沒有匹配函數調用'Duty :: Duty()'”與換行構造函數的行。 我認為它認為我正在試圖召喚一個Duty類構造函數? 但我只是想傳遞一個Duty類對象!

class Duty
  {
  string Chore;
  string Member;

  public:
  Duty(string dutyInfo);
  Duty(string chore, string member) {Chore = chore; Member = member;}
  };

class changeDuty
  {
  Duty Original;

  public:
  changeDuty(Duty original) {Original = original;}
  };

在仔細閱讀相似的問題后,我嘗試過使用

changeDuty(Duty& original) {Original = original;}

changeDuty(const Duty& original) {Original = original;}

仍然沒有骰子。 我究竟做錯了什么?

changeDuty(Duty original) {Original = original;}

第一個默認構造Original ,然后重新分配它。 但是沒有默認構造函數,所以這是一個錯誤。 你想要的是:

changeDuty(Duty original) : Original(original) {}

哪個復制構造Original

您需要添加默認構造函數。 一個空的將做:

Duty();

既然你這樣做:

Duty Original;

編譯器需要能夠使用不帶參數的構造函數構造Duty對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM