c++ - istream 重载,第二个参数是双指针?
问题描述
我的问题是实现这一点的正确方法是什么,我将如何使用它?要重载的运算符具有以下原型:
//Reads a variable from an input stream
//A variable should have a one-word name that does not start with a digit or minus sign
istream& operator>>(istream& in, Variable** v)
我们得到了一个变量类和一个方程类。我认为重载 istream 运算符的目标是在从字符串创建方程式对象时使事情变得更容易。你可以在下面找到它。我实现这一点的尝试如下:
istream& operator>>(istream& in, Variable** v)
{
string i;
in >> i;
if (isalpha(i[0]) && i[0] != '-')
*v = new Variable(i);
return in;
}
变量类:
class Variable : public Operand
{
private:
static unordered_map<string, int> vars;
string name;
public:
Variable(string);
virtual int getValue() const override;
void setValue(int);
};
方程类:
class Equation
{
private:
Variable* var;
Operand* lhs;
operator_t op;
Operand* rhs;
public:
Equation(string);
int evaluate();
//Should also implement copy constructor and copy assignment (rule of three)
~Equation();
};
解决方案
推荐阅读
- java - Maven 和 java:在测试目录中缺少生成的服务代码
- angular - 将多个 ngrx 商店选择组合成单个调用 Angular 7
- mysql - 如何根据列中的子字符串进行聚合?
- python - FileNotFoundError: No such file or directory (for Dogs and Cats code)
- c - 如何在函数中调用函数
- php - 如何在 DQL 中使用 RETURNING 更新查询
- ios - 如何在 Swift 中删除领域中的对象
- ruby-on-rails - 为什么“唯一性:真实”验证在我的测试(Rails)中不起作用?
- amazon-web-services - 错误:InvalidProfileError - 尽管有配置文件,但无法找到配置文件(默认)
- javascript - Uncaught Invariant Violation:最小化 React 错误