将不同的对象添加到std :: list

use*_*467 4 c++

你可以在同一个列表中添加不同的类对象吗?

Sch*_*ron 6

见boost :: any.

您可以使用std :: vector然后使用它来添加异构类型.

例:

std::vector<boost::any> v;
v.push_back(std::string("hello world"));
v.push_back(42);
Run Code Online (Sandbox Code Playgroud)

  • 如果你想更进一步,看看boost :: variant.它更像是boost :: any的编译时版本,带有编译时检查.boost :: any或多或少是动态的方法,在运行时完成类型检查. (4认同)
  • 是的,因为任何人都不知道可能的类型,所以无法获得存储对象的类型.人们必须事先知道它才能获得价值.对于变体,变体会告诉你,这是一个很大的好处. (2认同)