在struct矩阵中初始化对象实例的正确方法是什么?

我的构造函数Cita(int, int)需要两个参数来创建新实例,但是当我编译程序时,我的 shell 告诉我必须使用-std=c++0x or -std=gnu++0x进行编译,但我不允许这样做。这是错误。

Dia.cpp: In constructor ‘Dia::Dia(int, int, int)’:
Dia.cpp:9:56: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x [enabled by default]
Dia.cpp:9:75: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x [enabled by default]
Dia.cpp:9:75: error: deducing from brace-enclosed initializer list requires #include <initializer_list>

这是我的代码。

Dia.cpp
horario_funcionarios = vector_horario_funcionarios (numero_funcionarios,
  vector_horario(numero_horas, {true, Cita(0,0)}) );

Dia.hpp
struct hora_dia {
    bool habil;
    Cita cita;
};

typedef vector<hora_dia> vector_horario;
typedef vector<vector_horario> vector_horario_funcionarios;

class Dia {
    private:
        int id;
        vector_horario_funcionarios horario_funcionarios;
     .
     .
     .

Cita.cpp
    Cita::Cita(int id, int nivel) {
         this->id = id;
         this->nivel = nivel;
    }
    .
    .

最佳答案

在C++ 98中,不支持initializer_list,即不能使用列表{..}初始化 vector 或其他容器。

horario_funcionarios = vector_horario_funcionarios (numero_funcionarios,
  vector_horario(numero_horas, {true, Cita(0,0)}) );

正如g++所说,添加#include <initializer_list>并使用-std=c++0x进行编译。

关于c++ - 在struct矩阵中初始化对象实例的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16504323/

10-11 23:01