Как повторно использовать код, если в C ++ отличается только базовый класс? - PullRequest
0 голосов
/ 06 августа 2020

У меня два класса, все коды одинаковые, кроме базового класса. Как я мог их реорганизовать и повторно использовать код? some_code_1 и some_code_2 одинаковы в двух классах. Я новичок в C ++, спасибо за любые предложения.

<template class C>
class A : Base_1<C>
{
    private:
        using Base = Base_1<C>;
    public:
        using Base::Base;
       
        method(pa1, pa2, pa3)
        {
            // some_same_code_1
            Base::some_method(pa1, pa2, pa3);
            // some_same_code_2
        }
}

<template class C>
class A : Base_2<C>
{
    private:
        using Base = Base_2<C>;
    public:
        using Base::Base;
       
        method(pa1, pa2, pa3, pa4, pa5)
        {
            // some_same_code_1
            Base::some_method(pa1, pa2, pa3, pa4, pa5);
            // some_same_code_2
        }
}

1 Ответ

2 голосов
/ 06 августа 2020

Используйте шаблон:

template <typename Base>
class Foo : Base
{
  public:
    // some_code_1
    Base::some_method(pa1, pa2, pa3);
    // some_code_2
};

using A = Foo<Base_1>;
using B = Foo<Base_2>;

Здесь using A = Foo<Base_1>; делает A сокращением для Foo<Base_1>. В качестве альтернативы вы можете писать Foo<Base_1> каждый раз, когда вам нужен ваш класс. То же самое для B и Foo<Base_2>.

...