问答

C++中派生类模板覆盖虚函数的问题

作者:admin 2021-05-05 我要评论

// 定义基类模板template typename Tclass Base { public: // 声明虚函数 foo virtual Base* foo(const T) = 0;};// 定义派生类模板template typename Tclass C ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
// 定义基类模板
template <typename T>
class Base {
   public:
    // 声明虚函数 foo
    virtual Base* foo(const T&) = 0;
};

// 定义派生类模板
template <typename T>
class C : Base<T> {
   public:
    Base* foo(const T&) override;
};

// 在类定义域外定义foo
// error
template <typename T>
Base<T>* C<T>::foo(const T& t) {
    // function body
    return this;
}

上面这段代码在foo位置报错。
出错信息:declaration is incompatible with "<error-type> *C<T>::foo(const T &)" (declared at line 16)

具体问题和原因是什么?
正确的实现方法是什么?

###

派生类声明虚函数的时候返回值是Base<T>*不是Base*吧

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • C++中派生类模板覆盖虚函数的问题

    C++中派生类模板覆盖虚函数的问题

  • 对比两数组某项数值,如果相等,a数组

    对比两数组某项数值,如果相等,a数组

  • brew安装mysql8.0,DBngin安装mysql5.7

    brew安装mysql8.0,DBngin安装mysql5.7

  • nestjs-swagger 怎么在嵌套数组里使用

    nestjs-swagger 怎么在嵌套数组里使用

腾讯云代理商
海外云服务器