错误:请求从“ Mstream”转换为非标量类型“ std :: string {aka std :: basic_string <char>}”

时间:2019-10-05 17:12:16

标签: c++ c++11

请帮助我解决以下代码中的错误。

private int[] movieIDs = new int[MAXIMUM_RECORDS];
private double[] moviePrices = new double[MAXIMUM_RECORDS];

错误:

  

请求从“ Mstream”转换为非标量类型“ std :: string {aka std :: basic_string }”

1 个答案:

答案 0 :(得分:0)

std::string没有使用operator=作为输入的构造函数或Mstream。但是,它确实具有一个以char*和大小作为输入的构造函数:

int main(){
    Mstream m1;
    std::string str(m1.str, m1.len);
}

或者,您可以将std::string转换运算符添加到Mstream,然后可以将Mstream分配给std::string

class Mstream{
    unsigned int len;
    char *str;
    operator std::string() const { return std::string(str, len); }
};

int main(){
    Mstream m1;
    std::string str = m1;
}

无论哪种方式,请确保在尝试转换为Mstream之前,先使用有效的char*指针和长度值 正确初始化std::string