我有一個Qt類,它看起來是這樣的:如何在靜態方法中實例化當前類的實例?
class MyClass : public QObject
{
Q_OBJECT
public:
virtual void doSomething();
static void createInstance();
};
的createInstance
方法應該創建當前類的實例,並調用doSomething
方法就可以了。例如,如果我創建了一個名爲MyOtherClass
派生類,createInstance
應該創建的MyOtherClass
一個實例,並且該實例調用doSomething
。
起初我以爲模板可能是這裏的解決方案,但下面的代碼:
template <typename T>
static void createInstance();
// ...in myclass.cpp...
template <typename T>
void MyClass::createInstance()
{
T().doSomething();
}
...生成以下鏈接錯誤:
error: undefined reference to `void MyClass::createInstance<MyOtherClass>()'
This answer可能除了moc
沒有按工作過不適用於模板類。我有什麼選擇?
非常有趣的想法。謝謝! –