template <typename T>
class A
{
public:
T t;
void Do (void)
{
t.doSomething();
}
};
В приведенном выше, как я могу предоставить параметры конструктору 't' во время создания шаблона?.
Как, если бы у меня было:
class P1
{
public:
P1 (int i, int a) {}
};
class P2
{
public:
P2 (int a) {}
};
Я хотел бы использовать P1 и P2 в качестве параметров шаблона для A .. В настоящее время я поставляю экземпляр P1 / P2 в ctor of A, откуда 't' инициализируется с использованием copy-ctor.
Большая картинка (для UncleBens, GMan):
У меня есть много структур данных (DS) с множеством извергов в нем. Каждый из этих DS хранится в базе данных, отображается в интерфейсе пользователя и передается через RPC. У меня есть класс для проверки каждого из этих DS. Класс валидации должен вести себя по-разному в зависимости от ситуации, в которой он проверяется. Если проверка данных, извлеченных из БД, не удалась, она должна записать «понятную разработчику» ошибку и умереть с утверждением. При сбое проверки данных, полученных от rpc-клиента, сервер должен ответить соответствующей ошибкой. При сбое проверки данных, полученных с rpc-сервера, они должны быть зарегистрированы, и клиент должен аварийно завершить работу. При сбое проверки в пользовательском интерфейсе пользователь должен быть уведомлен.
Я решил сделать «обработку ошибок» политикой, которую можно выбрать во время компиляции в качестве параметра шаблона. Однако каждый из этих механизмов обработки ошибок требует разных способов построения. И вот где я застрял.
На данный момент у меня есть механизм, основанный на конструкторе копирования, в котором я упоминаю тип дважды (один раз в качестве параметра для шаблона и снова, как в случае с экземпляром экземпляра), который является избыточным.
Я хочу знать, как другие люди решат такой случай.