簡體   English   中英

繼承類的默認構造函數

[英]Default constructor for an inherited class

我已將問題減少到以下示例代碼:

class pokemon{
    public:
        pokemon(int n);
};

class MewTwo : public pokemon {
    public:
        MewTwo(int n);
};

MewTwo::MewTwo(int n) {}

這會產生錯誤:

沒有匹配函數來調用'pokemon :: pokemon()'

認為正在發生的是當我嘗試編寫MewTwo構造函數時,調用pokemon的默認構造函數,該構造函數不存在。 我對C ++比較陌生,所以我只想猜測一下。 有任何想法嗎?

約束:修復不能修改或添加公共成員到類。

實際上你要找的是成員初始化列表。 將繼承的類構造函數更改為以下內容:

class MewTwo : public pokemon {
    public:
        MewTwo(int n) : pokemon(n) {}
};

你在確定發生了什么是正確的。 基本上,當您創建繼承的類時,首先要創建基類,而不能這樣做,因為沒有定義默認構造函數。 成員初始化列表可以幫助您解決:)

查看: http//www.cprogramming.com/tutorial/initialization-lists-c++.html了解更多示例!

嘗試這個 :

class pokemon{
    public:
        pokemon(int n);
};

class MewTwo : public pokemon {
    public:
        MewTwo(int n) :pokemon(n){}
};

暫無
暫無

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

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