簡體   English   中英

c ++將對象從一個類推到另一個類的向量中?

[英]c++ Pushing an object from one class into a vector in another class?

我是C ++編程的新手,想知道是否有人可以為我解決這個問題?

我將在此處使用一些示例來回答我的問題。

假設在我的主類中,我從Blue類創建了一個Bob對象,

Blue Bob("bob", 3);

Blue類具有一個“名稱”和該類內部向量的大小。

現在讓我們介紹另一個類Red,它具有四個參數並具有三個對象,

Red GasPoweredStick("M000", "It never runs out of gas!", 1, 40);
Red Ozone("AFXE", "Filler", 4, 3);
Red Jupiter("KCAT", "Planets make terrible dinner guests", 99, 191919);

我想將紅色對象添加到Bob對象下的Blue類中的向量中,然后使用這些參數執行操作,

Bob.addItem(GasPoweredStick);
Bob.addItem(Ozone);
Bob.addItem(Jupiter);

導致此“ addItem”代碼,

void Blue::addItem(Red&)
{
    Items.push_back(Red());
}

我認為我的問題在於上面的代碼...問題是Red對象的參數信息默認為其構造函數的值,使它們全部為空白或0。而不是填充已創建對象的信息。 之所以無法自己解決卻無法解決的原因是因為這是我正在從事的一項工作,但是我目前對c ++的學習並未提及此特定問題。 該代碼是根據模板或先驗知識創建的。

我對c ++沒有太多經驗,但是我猜想addItem函數並沒有吸收創建的三個對象,而是每次我要求它推送一個新對象時都復制基本Red類。

我將不勝感激任何幫助! 我希望我足夠清楚。 如果需要的話,我會盡力清除。

這行:

Items.push_back(Red());

您使用默認構造函數推回新創建的Red對象。 只需傳遞參考即可:

void Blue::addItem(const Red& r)
{
    Items.push_back(r);
}

您的Red類應具有復制構造函數和賦值運算符:

void Red::Red(const Red& other)
{
(*this) = other;
}

Red& Red::operator=(const Red& other)
{
this->Name = other.Name; 
// TODO: copy other fileds
return (*this);
}

暫無
暫無

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

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