Ланской Кирилл , не смотря на отмеченное решение, описание у тебя крайне непонятное и решение, скорее всего, не решает саму твою проблему. Даже если сняло симптомы.
Тебе стоит привести конкретный код, чтобы с третьей стороны можно было убедиться в правильности приведенного решения.
forward declaration поможет, только если в векторе будет ссылка или указатель на класс.
Если в векторе предполагается размещать класс "по значению", то вариантов нет, т.к. что бы выделить память под вектор нужно иметь уже полное описание класса, а что бы полностью описать класс нужно полное описание вектора. Выполнить оба условия для вашего класса в рамках С/С++ не возможно.
Смотри ответ maaGames
res2001, ссылки в вектор невозможно поместить, так что только указатели. Сырые или смарт - по желанию.
Вместо вектора указателей можно сделать указатель на вектор. Но без forward declaration никак не сделать.
Почему только указатели(я когда применил forward declaration без указателей, то всё работало) и по этой ссылке говорилось https://stackoverflow.com/questions/4757565/what-a..., что при forward declaration и include это сокращает время сборки, почему?
Никак. В векторе придётся размещать указатели на второй класс и реализацию обязательно выносить в cpp файлы. А в заголовке без инклюда второго класса, только forward declaration, как уже посоветовали.
Ланской Кирилл, Потому что сделай массив ссылок и попробуй скомпилировать. Проблему решат не инклюды, а forward declaration. А forward declaration ты сможешь использовать либо с инклюдами, либо запихав оба класса в один файл.
Ланской Кирилл, Первый вариант не должен компилироваться, второй хороший вариант. Я его сперва не заметил. Ссылки у тебя в принцципе нет. vector - вот это массив ссылок и это не скомпилируется вообще никогда. У тебя массив значений, почему компилируется - не знаю. Может прокатило, потому что в одном файле всё.