Примечание: Я знаю, что подобные вопросы были заданы на SO раньше, но я не нашел их полезными или очень ясными.
Второе примечание: В рамках этого проекта/назначения я стараюсь избегать сторонних библиотек, таких как Boost.
Я пытаюсь понять, есть ли способ, которым я могу иметь один вектор, удерживающий несколько типов в каждом из его индексов. Например, скажем, у меня есть следующий пример кода:
vector<something magical to hold various types> vec;
int x = 3;
string hi = "Hello World";
MyStruct s = {3, "Hi", 4.01};
vec.push_back(x);
vec.push_back(hi);
vec.push_back(s);
Я слышал, что vector<void*>
может работать, но потом становится сложно с распределением памяти, и тогда всегда существует вероятность того, что некоторые части в соседней памяти могут быть непреднамеренно переопределены, если значение, вставленное в определенный индекс, больше, чем ожидалось.
В моем фактическом приложении я знаю, какие возможные типы могут быть вставлены в вектор, но эти типы не все происходят из одного и того же суперкласса, и нет гарантии, что все эти типы будут перенесены на вектор или в каком порядке.
Есть ли способ, которым я могу безопасно выполнить задачу, которую я продемонстрировал в своем примере кода?
Спасибо за ваше время.