由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 再来一个C++模板问题
相关主题
相关话题的讨论汇总
话题: base话题: functionp话题: class话题: void话题: public
进入Programming版参与讨论
1 (共1页)
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
2
对了,B,C要表现出多态,BASE里有虚函数。
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){}

1 (共1页)
进入Programming版参与讨论
相关主题
相关话题的讨论汇总
话题: base话题: functionp话题: class话题: void话题: public