我有一堆非常长的方程式形式的数据,其中包括(a/b)
形式的有理数,其中a和b是整数。我做了一个简单的类,用相应的算术运算符存储有理数。
我正在尝试编写一些能够识别(a/b)
形式的代码,并使用相应的分子和分母构造该类的实例。我更希望保留输入(a/b)
的原始形式。是否可以重载/运算符,以便(a/b)
将返回有理数对象? (如果没有,有任何解决方法的想法吗?)
非常简化的代码示例:
Param A;
Param B;
(3/5)*A*A + (1/3)*B*B
我的Param类与其自身以及与有理数类都有明确定义的乘法。我只需要将
(3/5)
和(1/3)
识别为有理数实例的代码。 最佳答案
没有;如果至少一个操作数是用户定义的类型,则只能重载操作符。您不能重载两个操作数均为operator/
或任何其他内置类型的int
。
您可以获得的最接近的是rational(a)/b
。是否比rational(a,b)
更好,取决于您的审美判断。
在C++ 11或更高版本中,您可以修改用户定义的文字并编写类似3_r/4
的代码;但是我不会。
关于c++ - 使用/创建简单的有理数对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23562299/