C++ Тип класса как аргумент

Если у меня есть интерфейс и множество классов, реализующих этот интерфейс, могу ли я теперь передавать в качестве аргумента только тип класса, а не объекта?

что-то вроде этого:

Interface *creatClass(class : Interface){
    return new class();
}

EDIT:

template <class T>
IFrame *creatClass(){
    return new T();
}

void dfg(){
    IFrame *lol = creatClass<Button>();
}

error C3206: 'creatClass' : invalid template argument for 'Dist_Frame', missing template argument list on class template 'Button'

PS. Button inherits IFrame

7
задан Vladp 24 October 2011 в 19:07
поделиться