У меня есть шаблон класса Polinom, который использует обобщенные типы данных c (int, float, double, класс Complex (определено мной)), и я хочу преобразовать строку в Polinom, используя эту функцию для чтения и Конструктор:
Полион. cpp
template<typename T>
istream& operator>>(istream& in, Polinom<T>& P) {
char line[1000];
in.getline(line, 1000);
int gr = -1;
T cf[100];
char* pt;
pt = strtok(linie, " ");
while (pt) {
cf[++gr] = T(pt);
pt = strtok(NULL, " ");
}
P = Polinom<T>(gr, cf);
return in;
}
Комплекс. cpp
Complex::Complex(const char* str){
/*
...
*/
}
Все хорошо, когда я использую комплексный тип данных (Полином а (12 , 4); std :: cout << a << endl;) // Я определил функцию друга ostream для этой строки; ) потому что я пишу этот конструктор Complex :: Complex (const char * str) </p>
Проблемы возникают, когда я использую примитивные типы данных
Polinom<int> a(12, 4); because of T(const char* ) ===> int(const char*)
Как я могу решить эту проблему? Большое спасибо!