C ++-为什么没有合适的构造函数从MyClass()转换为Myclass?

时间:2018-07-08 23:13:21

标签: c++ c++11

对于作业,我需要创建一个可以执行任意精度算术的类。这是该类的最简单定义:

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编译器。

0 个答案:

没有答案