Я не уверен, как создать массив объектов в своем собственном классе. Например:
class A {
public:
const static int MAX_SIZE = 10;
private:
A arrayOfOBjects[MAX_SIZE];
}
Я получаю сообщение об ошибке: «Теперь разрешен неполный тип». Как мне это сделать? Если я объявлю массив объектов из другого класса внутри класса А, он будет работать. Но как мне создать массив объектов в своем собственном классе?
A
. - person juanchopanza   schedule 26.05.2013std::array<A, MAX_SIZE>
? - person Peter Wood   schedule 26.05.2013std::vector<A>
мог. - person juanchopanza   schedule 26.05.2013vector
сработает. - person Peter Wood   schedule 26.05.2013std::array
создает те же проблемы, что и стандартный массив C фиксированного размера, что является той же проблемой, что и наличие одного члена данных типаA
вA
.std::vector
не имеет этой проблемы, потому что он динамически выделяетA
объекты и не нуждается в полном типеA
(хотя я уверен, что это не работало в старых компиляторах, которые я использовал). - person juanchopanza   schedule 26.05.2013map
. Я всегда думал, что это была дырявая деталь реализации. Почемуarray
нельзя реализовать какvector
? - person Peter Wood   schedule 26.05.2013std::array
является заменой массива C фиксированного размера без накладных расходов, поэтому все данные, которые он содержит, являются его элементами. У него не может быть указателя, указывающего на некоторую динамически выделенную память. - person juanchopanza   schedule 26.05.2013