#pragma once #include // 对形如 "1+2*(3-4)" 的中缀表达式求值: // 乘除优先级高于加减,括号可提升优先级。 // 【Day3 calculator_mainwindow】与 ../calculator_designer_ext/ 版一字不差, // 求值逻辑独立于界面外壳——Day3 把 QWidget 换成 QMainWindow,本类不动。 class ExpressionEvaluator { public: struct Result { bool ok = false; double value = 0.0; QString errorMessage; }; // 结果显示精度(有效数字位数),要求不得小于 10。 static constexpr int kResultPrecision = 12; static_assert(kResultPrecision >= 10, "结果显示精度不得小于 10 位有效数字"); static Result evaluate(const QString& expression); };