Re[2]: Виртуальный конструктор на шаблонах?
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 06.08.14 13:32
Оценка: 8 (1)
Здравствуйте, Kernan, Вы писали:

K>Никак, если имя файла задаётся в рантайм.

Если хочется именно в компайлтайм, то что-то вроде этого. Но смысл? то, чего ты хочешь, ты не получишь.
struct obj
{
public:
  virtual int foo () = 0;  
};

struct A : public obj
{
    virtual int foo () {std::cout<<"FOO::A"<<std::endl; return 0;} 
};

struct B : public obj
{
    virtual int foo () {std::cout<<"FOO::B"<<std::endl; return 0;} 
};

template<typename T>
struct entryByFile: public T
{
    int entry() 
    {
        return T::make()->foo();
    }
};

struct fileA 
{
    obj* make() {return new A;}
};

struct fileB
{
    obj* make() {return new B;}
};

int
main (void)
{
    return entryByFile<fileB>().entry();
}
Sic luceat lux!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.