У меня есть шаблон функция определяется следующим образом:Передача объекта класса в функцию шаблона. C++
template<class T>
string toString(T value) {
ostringstream ss;
if (is_same<T, Student>::value) {
ss << value.getFirst() << ":" << value.getLast() << ":" << value.getId() << ":" << value.getGpa();
return ss.str();
}
else {
//ss << value;
return ss.str();
}
}
Если я должен был вызвать эту функцию следующим образом:
int main(){
Student studentObj;
toString(studentObj);
}
Как я доступ к этим классам различных членов из функции ToString?
я пытался (ошибки комментировали)
value.getId() //Returns int
//Error C2228 left of '.getId' must have class/struct/union
и
value<Student>.getId()
//Error C2275 'Student': illegal use of this type as an expression
Спасибо заранее!
редактировать: Класс определение
class Student {
protected:
std::string firstname;
std::string lastname;
int id;
float gpa;
public:
Student();
Student(std::string, std::string, int, float);
Student(const Student &);
std::string getFirst();
std::string getLast();
int getId();
float getGpa();
};
Что такое 'значение'? – Rakete1111
строка 2: строка toString (значение T). Значение - это просто имя того, что когда-либо передается в класс. – Cirrus
Это не тип, вы не можете этого сделать. Удалите часть '', это только для объявления –
Rakete1111