Я создал класс для комплексных чисел для назначения на прошлой неделе, и наше следующее назначение - изменить этот класс на класс шаблона. Частью назначения была перегрузка оператора извлечения, и первоначально, когда имел дело только с int, я взял всю строку ввода как строку и сделал подстроки для вещественных и мнимых частей, затем я использовал стои для преобразования частей в целые, которые я могмагазин (это то, что мой профессор предложил делать). Однако теперь, когда это шаблонный класс, он больше не работает, если используется тип double, float и т. Д. Есть ли функция, которая работает аналогично, но для разных типов? Или, возможно, другое решение, которое может работать лучше?
Я попытался использовать операторы if, чтобы определить, какой тип используется, а затем, соответственно, использовать стои, стод и т. Д., Однако это кажется не идеальным, поскольку он работает только для типов, которые я явно определяю, и яуверен, что это не то, что они ищут.
template <class T>
istream& operator>>(istream& in,MyComplex<T> &num){
string inString;
getline(in, inString);
T test = 3.33;
if(test != 3.33){
//convert using stoi
}
else if(test == 3.33){
//convert using stod
}
//etc.
}
Я пропустил то, что находится в скобках, потому что это очень долго и не меняет того факта, что я могу определить только для конечного количества данныхтипы. Заранее благодарю за любую помощь!