的擦除功能拷貝構造函數:vector::erase with pointer member,Remove elements of a vector inside the loop,我還需要在vector.erase功能提供一些幫助。我被指示實現一個拷貝構造函數,使擦除函數在一個向量上工作,這在另一個問題中也提到了。在我的相關課程中實現一個函數操作符是非常重要的。在這樣做時,我在創建複製構造函數時遇到了另一個錯誤,我無法找到長時間的原因。錯誤是「Player :: Player(const Player & otherPlayer)不爲以下內容提供initiallizer:」。我究竟做錯了什麼?考慮到Player包含作爲類成員的地圖,指針和參考(銀行是參考)。一個簡單的賦值是否足以進行初始化?實現基於生長出來的以前的問題的問題向量
我該怎麼辦?
class Player
{
public:
Player(int,int,string, Bank&);
Player(const Player&);
Player& operator = (const Player& rhs);
Player::Player(const Player& otherPlayer)
{
ID = otherPlayer.ID;
pName = otherPlayer.pName;
pMoney = otherPlayer.pMoney;
doubleIndicator = otherPlayer.doubleIndicator;
position = otherPlayer.position;
bank = otherPlayer.bank;
colBought = otherPlayer.colBought;
housesColBuilt = otherPlayer.housesColBuilt;
}
更新: 我在操作的implementantion點得到一個警告=爲:「返回一個局部變量或臨時的地址」。這是否喚起真正的問題?如果是這樣,我怎麼修改它來克服?
Player& Player::operator=(const Player& rhs)
{
return Player(rhs);
}
這樣,我還是收到一條警告,遞歸函數會導致堆棧溢出:
Player& Player::operator=(const Player& rhs)
{
*this = Player(rhs);
return *this;
}
任何提示?
回覆:更新。是的,這是一個真正的問題。 1)你不執行任何任務。 2)您返回對無效對象的引用。 (如果您認爲它有其他目的,則返回值僅用於鏈接。) – UncleBens 2011-12-25 14:51:51
我需要什麼樣的分配?爲什麼我需要複製構造函數?無法在operator =的函數內執行所有的操作嗎? – arjacsoh 2011-12-25 14:57:27