是否可以实现一个同时接受任何类型对象的链表?
例如:list.add(int(、list.add(float(、list.add(object1(、list_add(object2(
正如你所看到的,我在同一个列表中添加了不同的类型。
您可以使用std::any
来满足您的需求。
有一个如何向std::list<std::any>
添加元素以及如何从std::list<std::any>
读取元素的示例。
#include <any>
#include <iostream>
#include <list>
int main() {
std::list<std::any> list;
list.emplace_back(1);
list.emplace_back<std::string>("ok");
for (auto& item : list) {
if (item.type() == typeid(int)) {
std::cout << "int : " << std::any_cast<int>(item) << std::endl;
} else if (item.type() == typeid(std::string)) {
std::cout << "string : " << std::any_cast<std::string>(item) << std::endl;
}
}
}