У меня есть класс (назовем его A), и я хочу скопировать A. Поэтому я вызываю конструктор копии A. A имеет член типа B *, который является указателем типа B на один из его подклассов (назовем их B числом (т.е.: B1, B5, ..)) Поскольку я не хочу просто скопируйте адрес, я вызываю memberofA-> copyconstructor из одного из подклассов. Конструктор копирования в базовом классе вызывается из конструктора копирования подкласса. Но возможно ли это или мне нужно динамическое преобразование указателя типа baseclass в правильный подкласс, указатель тоже указывает?конструктор копирования для baseclasspointer для подкласса
class A {
public:
A(const A& object) {
// what should i call here to deep copy member
}
private:
B* member //pointer to subclass of B
};
class B {
privatedatamamber
public:
B (const B& object) {
privatedatamember = object->getprivatedatamember();
}
};
class B1 : public B {
privatedatamember
public:
B1 (const B1& object) : B(object) {
privatedatamember = object->getprivatedatamember();
}
};
B1 (* this) вызывает экземпляр копии экземпляра B1? – user2321611
Не должно быть: A :: A (const A & object): member ((A.getmember) -> clone()) {} – user2321611
@ user2321611 - для первого комментария ответ да, в этом суть, если виртуальных функций. Для второго у меня была ошибка. Я исправил ответ. – egur