Use assignment operators instead of an implicit constructor

In my program, I am trying to use the assignment operator= to assign an object of my class. I am specifically trying to call the assignment operator instead of an implicit constructor (thus the explicit keyword). When I try to compile, I get a C2440 Compiler Error:

class MyClass {
public:
    explicit MyClass(double x = 0.) :
        m_x(x) {
    }

    MyClass& operator=(const double& other) {
        m_x = other;

        /* do something special here */

        return *this;
    }
private:
    double m_x;
};

int main()
{
    MyClass my_class = 2.; // C2440

    return 0;
}

I guess that the compiler fails trying to call the constructor implicitly (because of explicit). Does anyone have a fix?

Source: Windows Questions C++

LEAVE A COMMENT