Хорошо, таким образом, у меня есть класс, который имеет 'слабый контроль типов', Т.Е. он может сохранить много различных типов, определенных как:
#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=
.