У меня есть класс, который мне нужно инициализировать:Как инициализировать родителя с помощью члена дочернего элемента?
//Parent.h
class Parent {
public:
Parent(Image image);
private:
const Image parentImage;
}
//Parent.cpp
Parent::Parent(Image image) : parentImage(image) {}
//Child.h
#import "Parent.h"
class Child : public Parent {
public:
Child(int c);
private:
Camera childCamera;
}
//Child.cpp
Child::Child(int c) : Parent(this->childCamera.getImage()), childCamera(c) {}
В Camera
необходимо инициализировать, прежде чем изображения могут быть извлечены из него. В Parent
хранится изображение с камеры, которое находится const
, ребенок хранит Camera
. Как создать Child
? Я не могу изменить Parent
, так как существуют другие подклассы, которые инициализируют Parent
другими способами. Я могу изменить Child
, но Camera
не может быть скопирован, а Child
необходимо сохранить Camera
.
EDIT: Я мог бы добавить конструкторы в Parent
, если это самое чистое решение.
что такое 'this-> childDataSource.getImage()'? Ваш код не показывает зависимости между 'childCamera' и' Parent' – David
Извините, должен быть 'this-> childCamera.getImage()'. В реальной ситуации есть еще много членов и т. Д., Я сделал ошибку при упрощении. – Drew
https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Base-from-Member – Columbo