[英]Initializing class with object in constructor
我的標頭類看起來像-
class Dog {
private:
Owner _owner;
public:
Dog(Owner o);
~Dog();
};
那么我收到錯誤的部分是-
Dog::Dog(Owner owner){
this -> _owner = owner;
}
看起來很簡單,但是當我編譯時出現此錯誤,我真的不知道為什么-
Constructor for 'Dog' must explicitly initialize the member '_owner' which does not have a default constructor
關於我可以解決的任何想法? 我是C ++的新手,所以我想我錯過了一些語法相關的內容
調用此構造函數時
Dog::Dog(Owner owner){
this -> _owner = owner;
}
首先,實例變量_owner
使用其默認的構造函數Owner()
構造,然后為其分配`this-> _owner = owner;。
因此,您必須具有默認的構造函數才能執行此操作,正如您的錯誤所述,沒有可用的構造函數。 因此,您必須像這樣定義它並使其公開:
class Owner {
public:
Owner(){ }
};
或者,您可以簡單地調用復制構造函數Owner(const Owner& owner)
而不是Owner()
的默認構造函數,
Dog::Dog(Owner owner)
: _owner(owner)
{ }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.