Reputation: 77
I have two classes, all the codes are the same, except for the base class. How could I refactor them and reuse the code? some_code_1 and some_code_2 are the same in two classes. I'm new to C++, thank you for giving me any suggestions.
<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
}
}
Upvotes: 0
Views: 112
Reputation: 96236
Use a template:
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>;
Here, using A = Foo<Base_1>;
makes A
a shorthand for Foo<Base_1>
. Alternatively you can write Foo<Base_1>
every time you need your class. Same for B
and Foo<Base_2>
.
Upvotes: 2