【发布时间】:2017-03-11 21:39:42
【问题描述】:
我正在尝试找出一种方法(如果可能的话)来重载 >> 运算符以使用 mutator 正确运行。比如我想写:
myClass obj;
cin >> obj.setValue;
并让它在一行中使用可用的 mutator 正确设置 obj 的私有值。我知道我可以使用一个临时变量来存储 cin 并用它设置 obj 值,但我想知道是否有更简洁的方法,比如这个。我是新手程序员,所以这是我在 myClass 中的徒劳尝试:
friend std::istream &operator>>(std::istream &in, void (myClass::*pt)(double newValue)) {
double temp;
in >> temp;
pt(temp);
return in;
}
我知道我可以简单地重载整个 myClass 来接受:
cin >> myClass;
但这会阻止我在不同时间在 myClass 中设置不同的个人值。
谢谢
【问题讨论】:
-
欢迎来到 Stack Overflow。请花时间阅读The Tour 并参考Help Center 中的材料,您可以在这里问什么以及如何问。
-
cin >> obj.setValue;无法工作 - 它根本不是有效的 C++ 语法(假设setValue是myClass的成员函数)
标签: c++ c++11 operator-overloading member-function-pointers mutators