Я создаю класс шаблона для заполнения некоторых объектов класса T, однако объекты T разделяются в сети, и я не хочу давать им такую информацию, поэтому я создаю вспомогательный класс для каждого класса T и макроса:
class Entity {
// just Properties
}
class EntityHelper{
// needed method for fill from database
}
#define DBH(x) x##Helper
и это функция класса контекста для заполнения списка объектов
template<class T>
QList<T> ContextClass::query(const QString& q){
T inst;
DBH(T) helper;
// and another methods
}
Я получаю ошибку Unellared идентификатора THelper! если я не использую функцию m-> query (q); я не получаю ошибку??
Я знаю, что могу использовать другой способ для этого, но в этом подходе что-то не так?
ОБНОВИТЬ:
хорошо, мне кажется, я должен использовать другой подход, который я использовал?
template <class T>
class Helper {
Helper<T>* createInstance();
//some methods
}
class EntityHelper : public Helper<Entity>
{
EntityHelper* createInstance();
// query needed for entity table database
}
Помните, что макросы - это просто текстовые замены, поэтому ваш код становится:
template<class T>
QList<T> ContextClass::query(const QString& q){
T inst;
THelper helper;
// and another methods
}
это абсурд...
В вашем случае просто используйте шаблон:
template<class T>
class Helper;
template<>
class Helper<Entity>
{
// needed method for fill from database
};
template<class T>
QList<T> ContextClass::query(const QString& q){
T inst;
Helper<T> helper;
// and another methods
}
Helper
для каждого T
чтобы они могли иметь разных членов класса.
i dont want give so information on them
Что именно вы пытаетесь достичь?