对于作业,我需要创建一个可以执行任意精度算术的类。这是该类的最简单定义:
class MyClass() {
private:
std::vector<unsigned char> digits
public:
MyClass(); // Default constructor
MyClass(const MyClass& other); // Copy Constructor
MyClass(MyClass&& other); // Move Constructor
MyClass(std::vector<unsigned char> digits);
MyClass(unsigned long long value);
// Arithmetic and comparison operators defined below...
当我发现此代码导致编译器错误时,我正在尝试实现具有签名MyClass operator*(const MyClass& other)
的乘法运算符:
MyClass rv();
MyClass a(10);
rv = rv + a;
return rv;
第3行出现Expression must be a modifiable lvalue
错误
第4行出现No suitable constructor exists to convert from "MyClass ()" to "MyClass"
错误
但是,如果我将第一行更改为MyClass rv;
或MyClass rv = MyClass();
,错误就会消失。为什么会这样?
我正在Windows 10上使用MSVC编译器。