私は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与え「演算子を=」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を削除すると不平を言うので、今回はそうではありません。私はまったく同じ(たとえフォワード宣言とメンバーが参照であっても)小さなサンプルプログラムを書こうとしましたが、それはうまくいったのです。
私の意見では、それはいくつかの参照と組み込み型をコピーするだけなので、間違いなくすべきです。コンパイラが私のためにそれをするのが難しいとは思わないので、私はまだ自分の=演算子を書くことを試みなかったのです。私にとっては、クラスに新しいメンバーを導入するたびに、それを更新することを念頭に置くことの問題につながります。
この問題に関する私の考えはそれほどです。私はあなたが私が逃しているものを私に見せてくれることを願っています:) 事前に感謝!
愚かな私。ありがとう! –