我有两个类,一个分子和一个带有重载运算符+ =,+和*的single_atom类。 +只要两个操作数是分子或原子就可以工作。 *适用于原子或分子和int,可以反转。 + =仅在操作数是单个分子或原子时起作用,但应该能够使复杂的表达式扩散。如何合并+ =以便以下工作:
single_atom a1("sulpher");
single_atom a2("mercury");
Molecule m1(a1);
m1 += 3 * a1 + a2 * 4;
甚至只是:
m1 += 3 * a1;
答案 0 :(得分:0)
整个右侧需要适当地允许临时,例如
3 * a1
需要
single_atom single_atom::operator*(int value) const;
然后,这将返回single_atom&&
,您可以将其传递到下一个操作。这将一直持续到最后你有+=
的重载,看起来像是
single_atom& single_atom::operator+=(single_atom&& rhs)