QT 创建器错误(运算符 + 不匹配)

QT Creator Error (no match for operator+)

本文关键字:不匹配 运算符 创建 错误 QT      更新时间:2023-10-16

我正在尝试在QT Creator 5.6.0中构建一个反向波兰符号计算器。但是,每次构建代码时,我都会收到以下错误:

与"运算符+"不匹配(操作数类型为"双精度"和"QCharRef")

下面是出现问题的代码片段。(我用了 4 个星号来标记发生错误的行)

double MainWindow::runCalculation(QString correctPostfix)
{
QStack<double> postfixStack;
for(int i = 0;i< correctPostfix.length();i++) {
    if(correctPostfix[i] == ' ' || correctPostfix[i] == ',') continue;
    else if(isOperator(correctPostfix[i])) {
        double val2 = postfixStack.top(); postfixStack.pop();
        double val1 = postfixStack.top(); postfixStack.pop();
        double result = performOp(correctPostfix[i], val1, val2);
        postfixStack.push(result);
    }
    else if(isOperand(correctPostfix[i])){
        double operand = 0;
        while(i<correctPostfix.length() && isOperand(correctPostfix[i])) {
 ****          operand = operand + (correctPostfix[i]);
            i++;
        }
        i--;
        postfixStack.push(operand);
    }
}

在我尝试将其移动到QT之前,代码运行良好。 下面是我在控制台中运行时用于此函数的代码。

double calculate(string correctPostfix)
{
            stack<double> postfixStack;
for(int i = 0;i< correctPostfix.length();i++) {
    if(correctPostfix[i] == ' ' || correctPostfix[i] == ',') continue; 
    else if(isOperator(correctPostfix[i])) {
        double val2 = postfixStack.top(); postfixStack.pop();
        double val1 = postfixStack.top(); postfixStack.pop();
        double result = performOp(correctPostfix[i], val1, val2);
        postfixStack.push(result);
    }
    else if(isOperand(correctPostfix[i])){
        double operand = 0; 
        while(i<correctPostfix.length() && isOperand(correctPostfix[i])) {
            operand = (operand*10) + (correctPostfix[i] - '0'); 
            i++;
        }
        i--;
        postfixStack.push(operand);
    }
}
return postfixStack.top();
}

操作数 = 操作数 + (正确后缀[i]);

像这样制作

QString currentPostfixStr(correctPostfix[i]);
operand = operand + currentPostfixStr.toDouble();

而这让QString

双重计算(字符串正确后缀)

你的意思是代码:

正确后缀[i] - '0'