Создание массива указателей на статические функции производного типаC++

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

Сообщение Anonymous »

Я узнал, что могу «заставить» производный тип реализовать статический метод, используя шаблон шаблона Curiously Recursive, вот так:

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

template
struct Base
{
static T foo()
{
return T::create();
}

virtual void blabla();

};

struct Derived : public Base
{
static Derived create()
{
return Derived();
}

void blabla(){};
};

struct Derived2 : public Base
{
static Derived2 create()
{
return Derived2();
}

void blabla(){};
};
Могу ли я создать массив указателей на функции create, чтобы я мог вызывать их, создавать из них объекты Base и затем вызывать blabla функции для созданных объектов?
Думаю, я не могу объявить такой тип указателя без типа шаблона? Пытался поиграться с этими строками, но безуспешно:

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

typedef Base (*voidFunc)();

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

Base (*func)() = &Base::foo;

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

Base (*func)() = &Derived::create;
Очевидно, что не существует такой конструкции, как Java Base

Подробнее здесь: https://stackoverflow.com/questions/791 ... rived-type
Ответить

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

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

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

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

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