我收到错误错误无效转换从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;
}
答案 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();