在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/