Можно ли создавать классы, содержащие в качестве данных объекты этого же класса, указатели/ссылки на такие объекты, их массивы?
Например:
class A
{
A x;
A* y;
std::vector<A> v;
};
Объекты и массивы — нет, так как на момент объявления класс ещё не создан до конца, а потому неизвестно, сколько места требуется выделить для его экземпляров.
А указатели и ссылки — пожалуйста, ведь факт существования данного класса уже известен.
Указатели - запросто. А вот представьте себе, сколько памяти займет ваш класс, описанный в вопросе. Ведь он содержит в себе x
, который содержит в себе x
, который содержит в себе... Ну, вы понимаете - бесконечная рекурсия без каких бы то ни было надежд на прекращение. Это так, самое простое объяснение, почему нельзя.
Указатели же - запросто. Это очень широко применяемый метод - указатель на себя - для списков, деревьев и т.п.
Только если этот член статический, например:
class A
{
static A a;
};
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При запуске сервера _Client получает верное значение128 или 126 или 132 например
Мне нужно создать некий накопитель информаци к которому будет доступ разных приложений