我有一个简单的C ++计算器,其中包含三个类(仅出于练习目的,实际上我不需要那么多)。它们是tmp = []
for node in q:
for child in node.children:
tmp.append(child)
q = tmp
(使用其他对象的主要对象)Calculator
(用于存储为整数和枚举实例的简单数据结构)和Expression
(从用户读取输入)并转换为表达式)。
这是Parser
类头文件的代码:
Calculator
和Expression头文件:
#ifndef CALCULATOR_H
#define CALCULATOR_H
#include <Expression.h>
class Calculator
{
public:
enum Operation {Addition, Subtraction, Multiplication, Division, InvalidOperation};
Calculator();
~Calculator();
float calculate (const char* text);
protected:
private:
float calculate (Operation o, float num1, float num2);
float calculate (Expression* e);
};
#endif
编译器告诉我,即使我只是试图访问枚举而不是计算器的实例,在Expression类的构造函数中也未声明“ Calculator”(并且如果我没有理由,为什么它不起作用。如果您知道是什么导致了此问题,请告诉我。
谢谢!
编辑:我实际上尝试删除了#ifndef EXPRESSION_H
#define EXPRESSION_H
#include <Calculator.h>
class Expression
{
public:
Expression(Calculator::Operation operand, float num1, float num2);
virtual ~Expression();
Calculator::Operation getOperand ();
float getNum1 ();
float getNum2 ();
protected:
private:
Calculator::Operation _operand;
float _num1;
float _num2;
};
#endif // EXPRESSION_H
部分,但是该部分也不起作用,因此此问题不仅限于枚举。