我有一个看起来像这样的 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();
}
...产生以下链接器错误:
错误:未定义对 `void MyClass::createInstance<MyOtherClass>()' 的引用
这个答案可能有效,但moc
不适用于模板类。我有什么选择?