C++ 类型 'double' 和 'const char [5]' 到二进制 'operator+' 的无效操作数
C++ invalid operands of types 'double' and 'const char [5]' to binary 'operator+'
我是 c++ 的新手,我已经学习了大约 4 周,现在我开始尝试编写自己的东西,比如我正在做的这个东西:
#include <iostream>
#include <cmath>
using namespace std;
class abcformule{
public:
int discriminant(double a, double b, double c){
return pow(b, 2) - 4 * a *c;
}
void answer(double a2, double b2, double c2){
cout << (-b2 + discriminant(a2, b2, c2)) / (2 * a2) + "and " + (-b2 - discriminant(a2, b2, c2)) / (2 * a2);
}
};
int main() {
abcformule abc;
abc.answer(5, -2, -7);
return 0;
}
还没有完成,但是你可能猜到了,它应该是用abc公式来求解二次方程的x。 (我才14岁,不想做作业哈哈)
所以,它给了我这个错误:
12 58 D:\c++ dev-c\abc.cpp [Error] invalid operands of types 'double' and 'const char [5]' to binary 'operator+'
这是什么意思,我该如何解决?
问题是您不能像在 print 语句中那样使用“+”运算符。请改用“<<”运算符。尝试将您的 cout 语句更改为如下所示:
cout << (-b2 + discriminant(a2, b2, c2)) / (2 * a2) << " and " << (-b2 - discriminant(a2, b2, c2)) / (2 * a2) << "\n";
+ "and " +
行
cout << (-b2 + discriminant(a2, b2, c2)) / (2 * a2) + "and " + (-b2 - discriminant(a2, b2, c2)) / (2 * a2);
不起作用,因为 + 之前的部分和第二个 + 之后的部分是要添加到字符串的双精度值。
使用“<<”运算符而不是“+”
直接使用 cout 打印这些双精度值
我是 c++ 的新手,我已经学习了大约 4 周,现在我开始尝试编写自己的东西,比如我正在做的这个东西:
#include <iostream>
#include <cmath>
using namespace std;
class abcformule{
public:
int discriminant(double a, double b, double c){
return pow(b, 2) - 4 * a *c;
}
void answer(double a2, double b2, double c2){
cout << (-b2 + discriminant(a2, b2, c2)) / (2 * a2) + "and " + (-b2 - discriminant(a2, b2, c2)) / (2 * a2);
}
};
int main() {
abcformule abc;
abc.answer(5, -2, -7);
return 0;
}
还没有完成,但是你可能猜到了,它应该是用abc公式来求解二次方程的x。 (我才14岁,不想做作业哈哈)
所以,它给了我这个错误:
12 58 D:\c++ dev-c\abc.cpp [Error] invalid operands of types 'double' and 'const char [5]' to binary 'operator+'
这是什么意思,我该如何解决?
问题是您不能像在 print 语句中那样使用“+”运算符。请改用“<<”运算符。尝试将您的 cout 语句更改为如下所示:
cout << (-b2 + discriminant(a2, b2, c2)) / (2 * a2) << " and " << (-b2 - discriminant(a2, b2, c2)) / (2 * a2) << "\n";
+ "and " +
行
cout << (-b2 + discriminant(a2, b2, c2)) / (2 * a2) + "and " + (-b2 - discriminant(a2, b2, c2)) / (2 * a2);
不起作用,因为 + 之前的部分和第二个 + 之后的部分是要添加到字符串的双精度值。 使用“<<”运算符而不是“+”
直接使用 cout 打印这些双精度值