С надлежащим OOD, его редко приходится использовать dynamic_cast, но я использую его со следующим примером. Это правильный подход ? Идея кода, что классы Long и Double Numerics, и я решил добавить Numerics, включая смесь Double и Long, как показано в main().Dynamic_Cast in C++
class Numeric{
virtual Numeric& (const Numeric& num)=0;
}
class Double: public Numeric{
double data;
Numeric& operator+(const Numeric& num){
//if Double type
if(Double* d = dynamic_cast<Double *>(num)){
return Double(data+(Double &)num.data);
}
else{ //must be Long
return (doLongDoubleMath());
}
}
}
class Long: public Numeric{
long data;
Numeric& operator+(const Numeric& num){
}
}
int main(){
Numeric &n1 = Double(1.1);
Numeric &n2 = Long(10);
Numeric &result = n1+n2;
return 0;
}
Я хочу, чтобы иметь возможность смешивать различные типы, как добавить Double и Long..etc, Есть dynamic_cast правильного пути идти об этом, или вы можете придумать лучший способ?
Вы уверены, что код компилируется? Попробуйте с помощью 'g ++ -Wall -Wextra -g' ... Ваша вторая строка выглядит подозрительной для меня ... –
вам нужно предоставить оператор + перегрузка. Без этого, как вы можете назвать операцию добавления для определенных пользователем объектов? – Nandu
Но вы должны сделать настоящий код. –