错误23错误C2440:'return':无法从'char [128]'转换为'char(&&)[128]'

时间:2014-11-12 05:18:12

标签: c++

基本上,我写了一个返回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   

2 个答案:

答案 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!

    // ...
}