基本上,我写了一个返回vector of char
的方法的签名,我收到了这个错误
Error 23 error C2440: 'return' : cannot convert from 'char [128]' to 'char (&&)[128]'
这是方法的签名
vector<char[256]>returnMessage(string ACK)
{
}
,我不能将char的向量声明为全局变量。
当我这样做时:
std::vector<char[256]> myvector;
我明白了:
Error 24 error C1903: unable to recover from previous error(s); stopping compilation
和
Error 23 error C2075: 'Target of operator new()' : array initialization needs curly braces
答案 0 :(得分:0)
由于向量的内部代码,您会收到此类错误。模板替换失败。
连接第一个错误以移动语义。 Vector试图移动char[256]
并失败。
第二个new
表示向量代码中的某处有new T()
,当T
是普通数组类型时,替换会再次失败。
解决方案是使用char*
答案 1 :(得分:0)
您在实例化时遇到问题,但没有声明类型。只需使用:
struct Chars256 {
char arr[256];
};
你将能够:
vector<Chars256> returnMessage(string ACK) {
Chars256 arr;
Chars256 arr2 = {{0}}; // setting value only for first element, all other will be zeros!
// ...
}