Я хочу определить некоторые произвольные свойства для каждой точки в некоторых классах, но тип и количество свойств не определены ранее. Поэтому мне нужно сохранить их в векторе, но я не знаю, как определить вектор, чтобы каждый элемент имел не определенный размер и имел различное количество полей. Класс выглядит следующим образом:вектор с неопределенным размером элемента и количества элементов
class UnstructuredMesh
{
std::vector<size_t> m_cellBegIndices; //!< Cell Beginning Indices
std::vector<size_t> m_faceBegIndices; //!< Face Beginning Indices
std::vector<OSG::Pnt3f> m_points; //!< Points
std::vector<????, ????> m_pointProperties; //!< Point Properties
};
Может ли кто-нибудь помочь мне с этой проблемой?
Как об использовании, например, [Boost Any] (http://www.boost.org/doc/libs/1_57_0/doc/html/boost/any.html) или [Boost Variant] (http://www.boost.org/doc/libs /1_57_0/doc/html/variant.html)? –
@JoachimPileborg По моему вопросу я имею в виду, что все векторные элементы имеют одинаковый размер, но их размеры не определены ранее, и это будет определено во время выполнения, но я думаю, что это нужно использовать для вектора, который их элементы имеют разные размеры , Не так ли? – mmostajab
В этом случае невозможно использовать 'std :: vector', поскольку в момент компиляции он должен содержать указанный тип. Вы могли бы сделать это, используя 'void' *' и type-casting, но у него плохой запах кода. Кроме того, когда вы говорите, что размер исправлен, но во время выполнения он заставляет меня угадать, что у вас уже есть несколько разных структур, и вы просто выбираете один из них, когда программа работает, что означает, что вы действительно можете использовать Boost Any (или объединения), или, возможно, вы можете использовать 'std :: string' или' std :: vector '(или аналогичный) для данных. –