C ++类型'double'和'const char [5]'到二进制'operator +'的操作数无效

时间:2018-04-18 14:50:18

标签: c++ operands

我是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+'

这是什么意思,我该怎么做才能解决它?

2 个答案:

答案 0 :(得分:2)

问题是你不能像在print语句中那样使用“+”运算符。使用“&lt;&lt;”而不是运营商尝试将您的cout语句更改为:

cout << (-b2 + discriminant(a2, b2, c2)) / (2 * a2) << " and " << (-b2 - discriminant(a2, b2, c2)) / (2 * a2) << "\n";

答案 1 :(得分:0)

 + "and " + 

 cout << (-b2 + discriminant(a2, b2, c2)) / (2 * a2) + "and " + (-b2 - discriminant(a2, b2, c2)) / (2 * a2);

不能用作+之前的部分,而第二个+之后的部分是要添加到字符串中的double值。 使用“&lt;&lt;”直接使用cout打印这些double值运算符而不是“+”