我有模板在我.h
文件:
template <typename T>
void addToolsAreaItem(){
T* item = new T(_image, this);
doSpecifiedStaff<T>(item);
_tools.addTool(item);
}
其专业化.cpp
文件:
template <>
void ImageWorkspace::addToolsAreaItem<Preview>(){
_preview = std::make_unique<QGraphicsView>(_splitter);
_imagesLayout.addWidget(_preview.get());
}
类Prewiew
是空的,并且仅用于一种情况下(当预览按钮被触发)的专门化行为。
但我得到的编译器错误:
imageworkspace.h:45: error: new initializer expression list treated as compound expression [-fpermissive]
T* item = new T(_image, this);
^~~~~~~~~~~~~~~~~~~
imageworkspace.h:45: error: no matching function for call to ‘Preview::Preview(ImageWorkspace*)’
T* item = new T(_image, this);
^~~~~~~~~~~~~~~~~~~
难道编译器看到的专业化? 如何解决呢?
函数被调用作为addToolsAreaItem<Preview>()
从sorces。