不能直接向std__vector添加一个数组、不能用成员初始化列表初始化数组成员

⌚Time: 2023-10-28 18:48:56

👨‍💻Author: Jack Ge

这是因为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


std::vector<string> m_switchAvaiableStatus;

另外,不能用成员初始化列表初始化数组成员


public:

    StatusBase():m_name("StatusBase"){

    

    }

private:

    char m_name[1024];

会报错:


error C2536: “StatusBase::StatusBase::m_name”: 无法指定数组的显式初始值设定项

应该改为


public:

    StatusBase():m_name("StatusBase"){

    

    }

private:

    string m_name;