Гибкое преобразование между строками, int, double для класса вариантов C ++

Я реализую вариантный класс (не использующий ускорение), и мне интересно, как бы вы справились случай, когда вы сохраняете строковое, целочисленное или двойное число и автоматически конвертируете его в соответствии с желаемым типом с помощью 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 () работает) и вызывать исключение, когда назначенный тип отличается от того, в который вы хотите преобразовать.

Извините, использование ускорения не вариант.

11
задан JosephH 21 November 2011 в 20:10
поделиться