这是因为std::vector的模板参数必须是一个可复制的类型,而数组是不可复制的。因此,不能直接向std::vector添加一个数组。
所以下面的代码会出错
std::vector<char[MAX_NAME_LENGTH]> m_switchAvaiableStatus;
char statusName[MAX_NAME_LENGTH] = { 0 };
strcat_s(statusName, argStatusName);
m_switchAvaiableStatus.push_back(statusName);
错误 126 error C3074: 只能使用初始值设定项列表初始化数组
正确办法是把容器模板参数变为string
另外,不能用成员初始化列表初始化数组成员
会报错:
error C2536: “StatusBase::StatusBase::m_name”: 无法指定数组的显式初始值设定项
应该改为