z****e 发帖数: 2024 | 1 class A{
static void f(int x);
static void g(int x);
};
class BASE{
...
};
class B:public BASE{
public:
B():functionP(&A::f){}
private:
void (*functionP) (int x);
。。。。
};
class C:public BASE{
public:
C():functionP(&A::g){}
private:
void (*functionP) (int x);
。。。。
};
B,C除了functionP所指向的东西不一样以外,其他代码都一样,有没有模板的方法生成
一个模板类,然后根据A::g还是A::f来实体化呢?或者其他好方法,避免这种所有代码
在C里边都和B一样,除了A::g。生成B,C两种类型。
BASE 是一个abstract class,提供公有interface。
多谢。 | z****e 发帖数: 2024 | | t****t 发帖数: 6806 | 3 template
class Derived : public Base { ... };
【在 z****e 的大作中提到】 : class A{ : static void f(int x); : static void g(int x); : }; : class BASE{ : ... : }; : class B:public BASE{ : public: : B():functionP(&A::f){}
| B*******g 发帖数: 1593 | 4 Base和B,C间再加个class放相同的代码?或者为什么不能就干脆放Base里
A里面漏了个public吧
【在 z****e 的大作中提到】 : class A{ : static void f(int x); : static void g(int x); : }; : class BASE{ : ... : }; : class B:public BASE{ : public: : B():functionP(&A::f){}
|
|