如何自定义一个 C++ 列表容器,使其可以容纳不同类型的结构?
例如
struct A
{
int a;
int b;
}
struct B
{
float a;
float b;
}
#include <list>
using namespace std;
int main()
{
...
...
A a;
a.a = 1;
a.b = 2;
B b;
b.a = 123.444;
b.b = 11.222;
List.push_back(a);
List.push_back(b);
return 0;
}
最佳答案
为什么不 polymorphism和指向对象的指针列表? 注意对象的生命周期。一旦这两个对象超出范围,列表中的指针将失效。您也可以选择 dynamically allocate (新建)这两个元素并在完成后删除它们,然后将它们从列表中移除。
稍后编辑:我觉得您是 C++ 的新手。学完动态分配,推荐你查查智能指针。他们通过自己来减轻手动管理内存的负担:
您可以在列表中使用它们而不是裸指针。
struct Base
{
virtual ~Base(){}
};
struct A : public Base
{
int a;
int b;
};
struct B : public Base
{
float a;
float b;
};
#include <list>
using namespace std;
int main()
{
...
...
A a;
a.a = 1;
a.b = 2;
B b;
b.a = 123.444;
b.b = 11.222;
std::list<Base*> l;
l.push_back(&a);
l.push_back(&b);
return 0;
}
关于c++ - 如何自定义 C++ 列表容器,使其可以容纳不同类型的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23723029/