Можно ли отдельно выделить родительский класс из объекта в виде объекта?

Вопрос звучит немного странно, лучше показать в коде:

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.

→ Ссылка