Базовый класс, принимающий аргументы шаблона дочернего класса и внутреннего дочернего классаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Базовый класс, принимающий аргументы шаблона дочернего класса и внутреннего дочернего класса

Сообщение Anonymous »

Я создаю библиотеку и хочу, чтобы пользователь мог создать ее экземпляр следующим образом:

Код: Выделить всё

int main (int, char**)
{
Child_Type1 c1 = Child_Type1();
Child_Type2 c2 = Child_Type2();
// ...
}
Базовый класс определяется тремя аргументами шаблона и используется в качестве интерфейса для всех производных классов. Тип T представляет тип данных, тип U представляет сам производный класс, а тип W представляет внутренний класс U.

Код: Выделить всё

template 
class Base
{
public:
virtual void test(void) = 0;
};
Одним из производных классов может быть:

Код: Выделить всё

template 
class Child_Type1
{
class Inner;

public:
Inner* var;

void test(void) override
{
// some code here
}
};
Когда вложенный класс Inner определен для всех Child_TypeX с одинаковым именем, но с разными элементами, например:

Код: Выделить всё

template 
class Child_Type1::Inner
{
T some_variable;
};

template 
class Child_Type2::Inner
{
T other_variable
};

// etc.
Когда я пытаюсь создать наследование, например:

Код: Выделить всё

template 
class Child_Type1 : public Base
Я столкнулся с проблемой, поскольку Child_Type1::Inner еще не существует. Поскольку я не могу объявить об этом до этого наследования, мне интересно, есть ли у кого-нибудь идеи, как это обойти.

Подробнее здесь: https://stackoverflow.com/questions/793 ... hild-class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Базовый класс, принимающий аргументы шаблона дочернего класса и внутреннего дочернего класса
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Базовый класс, принимающий аргументы шаблона дочернего класса и внутреннего дочернего класса
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • GMOCK метод, принимающий переменные аргументы
    Anonymous » » в форуме C++
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Gmock метод, принимающий переменные аргументы
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Gmock метод, принимающий переменные аргументы
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»