''的构造函数必须显式初始化引用成员''

cla*_*l3r 25 c++ reference member

我有这门课

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

};
Run Code Online (Sandbox Code Playgroud)

而这个构造函数:

CamFeed::CamFeed(ofVideoGrabber &cam) {
    this->cam = cam;
}
Run Code Online (Sandbox Code Playgroud)

我在构造函数上得到了这个错误:''的构造 函数必须显式初始化引用成员''

什么是解决这个问题的好方法?

jua*_*nza 38

您需要使用构造函数初始化列表:

CamFeed::CamFeed(ofVideoGrabber& cam) : cam(cam) {}
Run Code Online (Sandbox Code Playgroud)

这是因为引用必须引用某些东西,因此不能默认构造.进入构造函数体后,所有数据成员都已初始化.你的this->cam = cam;行真的是一个赋值,将引用的值赋给cam任何this->cam引用的值.