撇開我使用的getter/setter,其中較有經驗的C++這樣的事實 - 程序員不會使用它們我有一個問題,下面代碼:C++編譯器C2582不會自動生成默認c'tor或=運營商
#include "Player.h"
class Entity
{
public:
Entity::Entity(Player& _owner)
: owner(_owner) { }
Player &get_owner() { return this->owner; }
void set_owner(Player &_owner) { this->owner = _owner; }
private:
Player &owner;
};
這給了我一個C2582,說'operator ='在set_owner函數中不可用。我的播放器類看起來像這樣:
class Layer;
class Cell;
class Player
{
public:
Player();
void credit_to_balance(const long &_amount);
..more getter/setter..
private:
long balance;
Layer ¤t_layer;
Cell ¤t_cell;
};
直到現在我還以爲我的默認構造函數/析構函數和=運算符會永遠!如果我沒有自己完成(並且它們在整個程序中使用),那麼由編譯器構建。顯然這不是這種情況,因爲其他類也會抱怨從Player中移除手動插入的默認c'tor。我甚至試圖編寫一個完全相同的小示例程序(即使是前向聲明和作爲引用的成員),它的工作原理。
而且在我看來,這絕對應該的,因爲它只會複製一些參考和本徵型。這就是爲什麼我沒有嘗試編寫自己的=運算符,因爲我認爲編譯器沒有任何困難爲我做。對我來說,每次我將新成員介紹給我的課程時,都會導致想要更新它的問題。
對於我在這個問題上的想法如此之多。我希望你們能告訴我我錯過了什麼:) 在此先感謝!
傻我。謝謝! – 2011-01-23 15:26:24