如何初始化对象指针列表

时间:2015-09-14 08:59:49

标签: c++ c++11 linked-list

我想构建一个指向对象的指针的链接列表,根据定义对其进行初始化,而不是多次调用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*>作为类构造函数表单,但编译器返回它需要模板语法。

这意味着什么?

如何初始化这些列表?

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

1 个答案:

答案 0 :(得分:1)

std::initializer_list和关联的构造函数是C ++ 11的特性,因此必须在编译器中启用。请查看有关如何执行此操作的必要文档。在Clang或GCC中,您只需在命令行调用中传递-std=c++11