Вам необходимо реализовать свои специализированные функции следующим образом:
template<>
const string& Entity<Client>::name() const {
return _name;
}
template<>
Client& Entity<Client>::name(const string& name) {
_name = name;
return *This();
}
, а также добавить публичное наследование:
class Client : public Entity<Client>
, чтобы вы могли получить доступ name()
.
Если вы хотите универсальные реализации:
template<class x>
const string& Entity<x>::name() const {
return _name;
}
template<class x>
x& Entity<x>::name(const string& name) {
_name = name;
return *This();
}