Можно ли отдельно выделить родительский класс из объекта в виде объекта?
Вопрос звучит немного странно, лучше показать в коде:
class class1
{
public:
int x = 0;
};
class class2:class1
{
public:
int y = 0;
};
int main()
{
class2 Obj2;
class1 Obj1 = Obj2::class1;
}
Такое вообще возможно? Если да, то как реализовать?
Можно сделать так, но мне не подходит
class class2
{
public:
class1 Obj1;
int y = 0;
};
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Если не забыть сделать наследование открытым
class class2: public class1
то проблема решается простым присваиванием/копированием
class2 Obj2;
class1 Obj1 = Obj2;
Каждый объект производного класса является объектом родительского, и это не пустые слова. Вы можете использовать объект производного класса везде, где используется объект родительского класса. При этом - если не передается указатель или ссылка - происходит срезка (slicing), т.е. все лишнее "отрезается", так что в Obj1 вы получите только ту часть от Obj2, которая соответствует class1.