Template specialization and inheritance

后端 未结 3 962
北荒
北荒 2021-02-01 04:21

Suppose I have a template class with a lot of functions and I want to specialize them to change only a few of them and keep the other ones exactly as specified in the base templ

3条回答
  •  耶瑟儿~
    2021-02-01 05:04

    Nicol's solution works fine, but this is an alternative:

    template
    struct Base
    {
      void print1() {cout << "Base::print1" << endl;};
      void print2() {cout << "Base::print2" << endl;};
    };
    
    template<>
    void Base::print2() {cout << "Base::print2()" << endl;};
    

    That way you can specialize only specific member functions and still use those that you haven't specialized(in this case, print1) without any problem. So now you'd use it just like you wanted:

    Base i;
    i.print1();
    i.print2(); // calls your specialization
    

    Demo here.

提交回复
热议问题