Подтвердить что ты не робот

Конструктор для '' должен явно инициализировать ссылочный элемент ''

У меня этот класс

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

};

И этот конструктор:

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

Я получаю эту ошибку в конструкторе: Конструктор для '' должен явно инициализировать элемент ссылки ''

Каков хороший способ обойти это?

4b9b3361

Ответ 1

Вам нужно использовать список инициализаторов конструктора:

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

Это потому, что ссылки должны ссылаться на что-то и поэтому не могут быть построены по умолчанию. Когда вы находитесь в теле конструктора, все ваши члены данных были инициализированы. Ваша строка this->cam = cam; действительно будет назначением, присваивая значение, на которое ссылается cam, на то, что означает this->cam.