Вы объявили login()
в myclass
в своем заголовке, но вы не показываете здесь, что вы определили его где-либо.
Поставив точку с запятой послесигнатура функции просто объявляет, что эта функция существует.Это не создает функцию.Вы должны определить функцию, чтобы использовать ее.
Вы можете определить ее в своем заголовке, поместив тело функции в {}
вместо точки с запятой.
class myclass{
// ...
template<class S>
void login(S login, S pass){
// code goes here
}
}
Размещениеопределение здесь - один из способов указать компилятору, что вы хотите встроить функцию, хотя компилятор может в любом случае не делать этого.
Или вы можете определить его в своем файле .cpp простокак и другие функции, которые вы определили.
template<class S>
void myclass::login(S login, S pass){
// code goes here
}
Поскольку это шаблонная функция, которая (предположительно) будет совместно использоваться несколькими файлами кода, она имеетбыть определенным в заголовке.
Без одного из них нет никакого тела функции, определенного для компилятора, который будет выполняться при вызове этой функции, следовательно, ошибка «неопределенная ссылка».