C++: оператор Overloading =

Хорошо, таким образом, у меня есть класс, который имеет 'слабый контроль типов', Т.Е. он может сохранить много различных типов, определенных как:

#include <string>

class myObject{
   public:
      bool isString;
      std::string strVal;

      bool isNumber;
      double numVal;

      bool isBoolean;
      bool boolVal;

      double operator= (const myObject &);
};

Я хотел бы перегрузить оператор присваивания как это:

double myObject::operator= (const myObject &right){
   if(right.isNumber){
      return right.numVal;
   }else{
      // Arbitrary Throw.
      throw 5;
   }
}

Так, чтобы я мог сделать это:

int main(){
   myObject obj;
   obj.isNumber = true;
   obj.numVal = 17.5;
   //This is what I would like to do
   double number = obj;
}

Но когда я делаю это, я добираюсь:

error: cannot convert ‘myObject’ to ‘double’ in initialization 

В присвоении.

Я также попробовал:

int main(){
   myObject obj;
   obj.isNumber = true;
   obj.numVal = 17.5;
   //This is what I would like to do
   double number;
   number = obj;
}

До которого я добираюсь:

error: cannot convert ‘myObject’ to ‘double’ in assignment

Есть ли что-то, что я пропускаю? или разве просто не возможно сделать преобразование как этот путем перегрузки operator=.

5
задан Jon Seigel 10 April 2010 в 18:23
поделиться