web-dev-qa-db-ja.com

''のコンストラクタは、参照メンバー ''を明示的に初期化する必要があります

私はこのクラスを持っています

class CamFeed {
public:
    // constructor
    CamFeed(ofVideoGrabber &cam); 
    ofVideoGrabber &cam;

};

そしてこのコンストラクタ:

CamFeed::CamFeed(ofVideoGrabber &cam) {
    this->cam = cam;
}

コンストラクターでこのエラーが発生します:''のコンストラクターは、参照メンバーを明示的に初期化する必要があります ''

これを回避する良い方法は何ですか?

28
clankill3r

コンストラクタ初期化子リストを使用する必要があります:

CamFeed::CamFeed(ofVideoGrabber& cam) : cam(cam) {}

これは、参照が何かを参照する必要があるため、デフォルトで構築できないためです。コンストラクタ本体に入ると、すべてのデータメンバーが初期化されています。あなたのthis->cam = cam;行は実際には割り当てであり、camによって参照される値をthis->camが参照するものに割り当てます。

38
juanchopanza