【问题标题】:Qt Creator refactoring and c++ templatesQt Creator 重构和 c++ 模板
【发布时间】:2017-11-28 10:57:32
【问题描述】:

我想弄清楚:有没有办法用 c++ 模板类进行重构?我想快速插入基类或专用模板的虚函数。

如果你的班级不够大也没关系。但是当你有 10 种方法需要重写和专门化时,它就会变得常规且容易出错。

例如,我有这个代码

template <typename T>
class MyTemplateInterface
{
public:
    virtual void DoWork() = 0;
};

比我写的代码

template <typename T>
class MyTemplateClass : public MyTemplateInterface<T>
{
public:
    MyTemplateClass() {}
};

而我想要得到的是那个

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

    }
};
template<>
void MyTemplateClass<int>::DoWork()
{
    // specialized template
}

附言对不起我的英语不好

【问题讨论】:

  • 感谢您的回答!文章说Qt不支持模板,但是我用的是纯C++代码。那么我可以假设如果 Qt 不支持它,Qt Creator 也不支持吗?也许还有另一种简单的方法可以解决这个问题?

标签: c++ qt templates qt-creator


【解决方案1】:

如果您只是希望 IDE 生成正确的虚拟方法,这在 Qt Creator 中是可能的。我不确定从哪个版本可以使用此选项。我正在使用Qt 4.1.0

拥有您指定的代码后,您可以右键单击派生类名称并选择Refactor &gt; Insert Virtual Functions of Base Classes,如下图所示。

然后,您可以选择不同的选项来决定是否只希望在类内部或外部生成声明或定义。

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

【讨论】:

  • 谢谢!我正在使用 Qt Creator 4.3.1 并且没有带有模板的“插入基类的虚拟功能”,但我正在积极地使用该功能与没有模板的类。当然,这是我问题的部分答案。
猜你喜欢
  • 2010-11-29
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
相关资源
最近更新 更多