различные типы объектов в std :: vector или другой структуре данных - PullRequest
0 голосов
/ 06 января 2012

Я хочу хранить такую ​​структуру

  template <typename var_type> struct
  {
  int some_var;
  //...some antoher vars
  var_type problem_var;
  };

в векторе или что-то вроде вектора, как я могу это сделать? Я не могу создать вектор с содержимым шаблона

Ответы [ 3 ]

5 голосов
/ 06 января 2012

Если вы знаете список типов заранее, boost::variant<> может быть более подходящим, чем boost::any.В вашем случае вам может понадобиться

typedef boost:variant<
   mystruct<float>,
   mystruct<int>
   mystruct<std::string>
> my_variant;

Это позволит использовать только эти 3 типа.В качестве альтернативы вы можете захотеть mystruct<boost:variant<float, int, std::string> >, что внешне похоже.Я не могу судить по вашему вопросу, который больше всего подходит для вашей проблемы.

1 голос
/ 06 января 2012

Вы можете использовать что-то вроде Boost.Any .

0 голосов
/ 06 января 2012

Разве вы не можете создать иерархию классов с типом объектов, которые нужно хранить и всегда обновлять до базового класса при вставке в вектор?

Недостатком является то, что вы всегда должны знать, какой тип использовать при извлечении элементов из вектора или использовании интерфейса базового класса (возможно, метода получения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...