2015-05-30 3 views
-1

Название может быть неясным, но код прост и должен объяснить сам. Я хотел бы напечатать конструктор для моего класса внутри класса и затем задать адрес указанного конструктора в другом месте.Как typedef конструктор класса внутри определения класса

class Dog { 
public: 
    typedef Dog* (__thiscall* Constructor_T)(Dog* thisptr); 
    static Constructor_T Constructor; 

    Dog() { 
     Constructor(this); 
    } 
}; 

void SetDogConstructor() { 
    Dog::Constructor = (Dog::Constructor_T)0x1234; 
} 

Ошибка я получаю это:

Error 2 error LNK2001: unresolved external symbol "public: static class Dog * (__thiscall* Dog::Constructor)(class Dog *)" ([email protected]@@[email protected]@@ZA) 
+0

Возможный дубликат [Статический конструктор в C++] (http://stackoverflow.com/questions/5803953/static-constructor-in-c) –

+0

Вы не можете «typedef a constructor». Конструктор - это функция. Тип - это тип. –

ответ

1

Статический член должен быть определен вне класса. В вашем случае вы бы поставили

Dog::Constructor_T Dog::Constructor = nullptr; 

in Dog.cpp.

Смежные вопросы