classname obj;
float f=obj;
возможно, если classname
имеет operator float()
, например
class classname
{
public:
classname() : value(0.0f) {};
operator float() const {return value;};
private:
float value;
};
, а
float f;
classname obj=f;
возможно, если classname
имеет конструктор преобразования, такой как
class classname
{
public:
classname(float v) : value(x) {};
private:
float value;
};
Если вы хотите назначить существующий объект для float
, например
float x;
classname f;
f = x;
, требуется присвоение operator.
class classname
{
public:
classname() : value(0.0f) {};
classname &operator=(float v) {value = v; return *this;}
private:
float value;
};
Очевидно, что если вы хотите создать или назначить объект с использованием float
, класс должен иметь как соответствующий конструктор, так и соответствующий оператор присваивания.