В настоящее время я работаю над проектом, который имеет несколько файлов и является немного сложным (с точки зрения сохранения права наследования).Я получаю ошибку компиляции, и я думаю, что это как-то связано со ссылками.Вот ошибка, которую я получаю во время компиляции
videotodatastream.cpp: In member function ‘virtual void Wade::VideoToDataStream::getData(std::string&)’:
videotodatastream.cpp:33: error: no matching function for call to ‘Wade::VideoWrapper::getVideo(Letscher::Video (&)())’
videowrapper.h:10: note: candidates are: virtual void Wade::VideoWrapper::getVideo(Letscher::Video&)
Вот строка, на которую она жалуется
Letscher::Video vid();
_vid.getVideo(vid); //Problem line
_vid - это личные данные участникатип VideoWrapper &
VideoWrapper& _vid;
VideoWrapper - это чистый виртуальный базовый класс со следующими методами:
class VideoWrapper {
public:
virtual void setVideo(Letscher::Video& video) = 0;
virtual void getVideo(Letscher::Video& video) = 0;
};
Дочерний класс VideoWrapper , который я на самом деле использую, это RawVideo , и он выглядит так
class RawVideo : public VideoWrapper {
public:
RawVideo(Letscher::Video& video);
virtual void setVideo(Letscher::Video& video);
virtual void getVideo(Letscher::Video& video);
private:
Letscher::Video* _vid;
};
Wade::RawVideo::RawVideo(Letscher::Video& video): _vid(&video) {
}
void Wade::RawVideo::setVideo(Letscher::Video& video) {
*_vid = video;
}
void Wade::RawVideo::getVideo(Letscher::Video& video) {
video = *_vid;
}
Так что когда я вызываю _ vid.getVideo (vid) ,Я хочу, чтобы он взял Video объект vid и установил его значение для личных данных в RawVideo .Но по какой-то причине способ вызова этой функции не совпадает с моим кодом.
Любая помощь будет отличной, спасибо.