不同的派生类共享相同的方法
Different derived classes share the same method
update:我刚刚知道c++支持多重继承。我认为多重继承是解决这个问题的最好方法。。
我有一个关于多个派生类共享方法的问题。。代码如下:
class Base{
public:
virtual double method1();
virtual double method2();
}
class A::public Base{
public:
virtual double method1();
virtual double method2();
}
class B::public Base{
public:
virtual double method1();
virtual double method2();
}
class C::public Base{
public:
virtual double method1();
virtual double method2();
}
class D::public Base{
public:
virtual double method1();
virtual double method2();
}
对于类A和B,方法1()是相同的;对于C类和B类,方法1()是相同的。(它使用基类成员作为参数)。
我认为这可以简化为:
class subBase1::public Base{
public:
void double method1();
}
class A::public subBase1{}
class B::public subBase1{}
class subBase2::public Base{
public:
void double method1();
}
class A::public subBase2{}
class B::public subBase2{}
但现在对于类B和C,method2()也是一样的(它使用基类成员作为参数)。我能做什么?无论如何都有A&B共享一种方法,并且B&C分享另一种方法?
谢谢!
下面的代码将实现这一点。
class Base
{
public:
virtual double method1() { /* code shared by A and B */ }
virtual double method2() { /* code shared by B and C */ }
};
class A : public Base
{
public:
virtual double method2() { /* code specific to A */ }
};
class B : public Base
{
};
class C : public Base
{
public:
virtual double method1() { /* code specific to C */ }
};
然而,值得注意的是,一旦进行了这些修改,B
与Base
是相同的。可能值得重新评估您的继承层次结构,以确定A
和C
是否应该从B
继承,如下所示:
class B
{
public:
virtual double method1() { /* code shared by A and B */ }
virtual double method2() { /* code shared by B and C */ }
};
class A : public B
{
public:
virtual double method2() { /* code specific to A */ }
};
class C : public B
{
public:
virtual double method1() { /* code specific to C */ }
};
相关文章:
- 如何访问由共享指针保存的类方法?
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 仅在少数方法(静态或共享库)中解析的外部符号
- 将共享指针传递给函数参数 - 将其分配给局部变量的正确方法是什么
- 两个类之间的共享方法
- 是否有更好的方法来封装成员对象可以访问的共享存储池?
- 在 c++ 中,在线程之间共享数据容器的最佳方法是什么?
- 识别打开的共享内存状态的方法
- 如何使 extern 方法在共享库中定义,但使用 cmake 在其他目标中声明?
- Cython:无法调用共享库的非静态方法
- 无法从C 代码访问C共享库方法
- 与C++共享 Julia 对象的最有效方法是什么?
- 一种在没有 root 的情况下加载共享库的更简单方法
- CUDA:共享内存的超载以用多个数组实现还原方法
- 使用 dlopen() 引用共享库插件的正确方法是什么?
- 使用VCPKG与朋友共享您的项目的最佳方法是什么?
- 共享指针交换方法标识更改
- 从多个线程对共享对象的同步方法调用
- 不同处理方法的设计模式,这些方法共享一些常见的处理链