如何初始化对象指针列表

how to initialize list of object pointers

本文关键字:指针 列表 对象 初始化      更新时间:2023-10-16

我想建立一个指向对象的指针链表,在定义时初始化它,而不是多次调用push_back(),这将是愚蠢的。

class Myclass {
    int x;
    string name;
    bool test;
    //whetever
public:
    Myclass();
    void inc_x();
    ~Myclass();
};
主:

Myclass c1,c2,c3,c4;
list<Myclass*> mylist;
/*
    list<Myclass*> mylist={&c1,&c2}; compiler returns initialized by constructor not by {...}
*/

我尝试使用list<Myclass*>::list<Myclass*>作为类构造函数的形式,但编译器返回它需要模板语法。

是什么意思?

如何初始化这类列表?

在这种情况下,我如何定义构造函数而不是使用默认构造函数?

std::initializer_list和相关的构造函数是c++ 11的特性,所以必须在编译器中启用。请查看实现所需的文档,了解如何做到这一点。在Clang或GCC中,您只需在命令行调用中传递-std=c++11