Я реализую вариантный класс (не использующий ускорение), и мне интересно, как бы вы справились случай, когда вы сохраняете строковое, целочисленное или двойное число и автоматически конвертируете его в соответствии с желаемым типом с помощью ToString (), ToInt () или ToDouble ().
Например, функции
Variant a = 7;
cout << "The answer is" + a.ToString() << endl; // should print "The answer is 7"
a = "7.4";
double &b = a.ToDouble();
b += 1;
cout << a.ToString() << endl; // should print 8.4
ToXXX
должны возвращать ссылку на тип, в который вы хотите преобразовать. Прямо сейчас у меня есть код, в котором он может возвращать тот же тип, который был изначально назначен ( Variant a = Int (7); a.ToInt ()
работает) и вызывать исключение, когда назначенный тип отличается от того, в который вы хотите преобразовать.
Извините, использование ускорения не вариант.