错误从const char *到int的无效转换

时间:2014-03-10 23:31:20

标签: c++

我收到错误错误无效转换从const char *到int。我明白错误是什么,但我不知道如何解决它。任何帮助表示赞赏。

错误在于:

BigNum temp = str.c_str();

std::istream& operator>>(std::istream &is, BigNum& bignum)
  {
    string str;
    is >> str;
    BigNum temp = str.c_str();
    bignum = temp;
    return is;
  }

3 个答案:

答案 0 :(得分:1)

....您将字符串指定为BigNum。你为什么这样做?

C ++不允许你在整数和指针之间进行隐式转换,如果你正在尝试这样做的话。

C ++也不是那种你可以将字符串分配给int并让它转换的语言,如果那是你想要做的。你需要做某种形式的lexical_cast ing。

答案 1 :(得分:0)

错误是编译器找不到:
1.包含char *参数或
的重载赋值运算符 2. BigNum构造函数,它带有char *

我建议为std::string添加赋值运算符。您可能还需要一个带std::string参数的构造函数和复制构造函数。

在网上搜索“C ++三级规则”。

答案 2 :(得分:0)

似乎您只需将类型为std::string的对象str转换为int类型的对象并调用相应的构造函数。

尝试以下

BigNum temp( stoi( str ) );

或者如果构造函数不明确那么

BigNum temp = stoi( str );

而不是

BigNum temp = str.c_str();