I have a class MyFloat:
class MyFloat
{
public:
float value = 0.0;
}
I use it so far in this way:
MyFloat *myfloat1 = new MyFloat;
myfloat1->value = 1.0;
How can I make
myfloat1 = 2.0;
if (myfloat1 < 3.0){
...
}
I have a class MyFloat:
class MyFloat
{
public:
float value = 0.0;
}
I use it so far in this way:
MyFloat *myfloat1 = new MyFloat;
myfloat1->value = 1.0;
How can I make
myfloat1 = 2.0;
if (myfloat1 < 3.0){
...
}
 
    
    You can use operator= and operator float
class MyFloat
{
public:
    float value = 0.0;
    MyFloat& operator=(float f)
    {
        value = f;
        return *this;
    }
    operator float() const
    {
        return value;
    }
};
int main() {
    MyFloat f;
    f = 10.0f;
    float x;
    x = f;
    return 0;
}
 
    
    As others have mentiond you could provide a operator=(float), however for a MyFloat it is more natural to be constructed with a float instead of first constructing it and then assigning a value:
class MyFloat {
    public:
        float value = 0.0;
        MyFloat(float x) : value(x) {}
        MyFloat() {}
 };
int main() {
    MyFloat x;
    x = 1.0;        // works because MyFloat(float) is used
    MyFloat y(2.0); // this is nicer
}
PS: as pointed out by R2RT, for x = 1.0; you dont want to use the constructor, but an assignment operator (I just left the line because thats what you were asking for). However, for a newly constructed MyFloat I would always prefer to pass the value to the constructor.
 
    
    Your object is of type MyFloat, not float so you can't assign a float value to it. What you can do is assign a float value to a data member of your class by overriding the class' = assignment operator:
 MyFloat& operator=(float p) {
     value = p;
     return *this;
 }
