@AiR_WiZArD

Как запихать безразмерный массив внутрь безразмерного массива?

Не знаю, правильно ли я делаю, но суть такова: есть объект, на котором может быть закреплено X разных блоков с двигателями, при этом каждый блок с двигателями имеет Y разных двигателей. Так как значения заданы в отдельном файле, заранее определить не получится. А брать по максимуму не очень экономично в плане ресурсов. Написал такие структуры:

//	Одиночный трастер
typedef struct
{
	sf::String textureLocation;		// Текстура объекта
	sf::Vector2f attachmentPoint;	// Точка крепления в px
	sf::Vector2f size;				// Размер объекта  в метрах
	float textureRotation;			// Ориентация текстуры
	float maxAngle;					// Максимальное отклонение при повреждении
	float thrust;					// Тяга трастера
	float specificImpulse;			// Удельный импульс трастера
} thrusterType;

//	Блок трастеров
typedef struct
{
	sf::String textureLocation;		// Текстура объекта
	sf::Vector2f attachmentPoint;	// Точка крепления в px
	sf::Vector2f size;				// Размер объекта
	float textureRotation;			// Ориентация текстуры

        // Информация о трастерах в составе блока
	thrusterType thrusters[];		

} thrusterMountType;

//	Информация об объекте
typedef struct
{
	sf::String textureLocation;		// Текстура объекта
	sf::Vector2f centerMass;		// Центр масс
	sf::Vector2f size;				// Размер объекта
	float textureRotation;
	float massDry;					// Сухая масса
	float massFuel;					// Масса топлива
	int n;
	
	// Информация о блоках трастеров в составе объекта
	thrusterMountType thrusterMount[];

} physicalObjectType;


Вот только компилятор такое воспринимать отказывается, так это создает двумерный безразмерный массив. Каким образом можно переделать?
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Используйте std::vector. Это массив который может расширяться во время работы программы. Обычно это хороший выбор вместо массивов почти во всех случаях. Смотрите методы push_back или resize.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы