Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt-Creator重构与c++;模板 我想知道:有什么方法可以用C++模板类重构吗?我想快速插入基类或专用模板的虚拟函数_C++_Qt_Templates_Qt Creator - Fatal编程技术网

Qt-Creator重构与c++;模板 我想知道:有什么方法可以用C++模板类重构吗?我想快速插入基类或专用模板的虚拟函数

Qt-Creator重构与c++;模板 我想知道:有什么方法可以用C++模板类重构吗?我想快速插入基类或专用模板的虚拟函数,c++,qt,templates,qt-creator,C++,Qt,Templates,Qt Creator,如果你的班级不够大,那没问题。但是,当您有10个方法需要重写和专门化时,它就会变成例行程序,并且容易出错 例如,我有这个代码 template <typename T> class MyTemplateInterface { public: virtual void DoWork() = 0; }; 模板 类MyTemplateInterface { 公众: 虚空DoWork()=0; }; 而不是我写的代码 template <typename T> cla

如果你的班级不够大,那没问题。但是,当您有10个方法需要重写和专门化时,它就会变成例行程序,并且容易出错

例如,我有这个代码

template <typename T>
class MyTemplateInterface
{
public:
    virtual void DoWork() = 0;
};
模板
类MyTemplateInterface
{
公众:
虚空DoWork()=0;
};
而不是我写的代码

template <typename T>
class MyTemplateClass : public MyTemplateInterface<T>
{
public:
    MyTemplateClass() {}
};
模板
类MyTemplateClass:公共MyTemplateInterface
{
公众:
MyTemplateClass(){}
};
我想得到的是

template <typename T>
class MyTemplateClass : public MyTemplateInterface<T>
{
public:
    MyTemplateClass() {}
    void DoWork() override
    {

    }
};
template<>
void MyTemplateClass<int>::DoWork()
{
    // specialized template
}
模板
类MyTemplateClass:公共MyTemplateInterface
{
公众:
MyTemplateClass(){}
void DoWork()重写
{
}
};
模板
void MyTemplateClass::DoWork()
{
//专用模板
}

p、 很抱歉我的英语不好

如果您只是想让IDE生成正确的虚拟方法,这在Qt Creator中是可能的。我不确定该选项的可用版本。我使用的是
qt4.1.0

拥有指定的代码后,您可以右键单击派生类名并选择
重构>插入基类的虚拟函数
,如下图所示

然后,您可以选择不同的选项,选择是只在类内部还是外部生成声明或定义


希望这能回答你问题的一部分。但是,我不确定目前是否有半自动生成专业化的方法。

谢谢您的回答!文章说Qt不支持模板,但我使用纯C++代码。所以我可以假设,如果Qt不支持它,Qt创建者也不会支持它吗?也许有另一个简单的方法来解决这个问题?谢谢!我使用的是QtCreator 4.3.1,没有带模板的“插入基类的虚拟函数”,但我积极地将该功能用于不带模板的类。当然,这是我问题的部分答案。