65,211
社区成员
发帖
与我相关
我的任务
分享首先要注意基类的设计问题:
基类最好不要有成员数据,这样才非常的灵活。
class InitializeAttr
{
public:
virtual void settype(char* ) = 0;
virtual void setvaule(int* ) = 0;
}
class InitializeA:public class InitializeAttr
{
public:
settype(char m){lable = m ;}
setvaule(int* v){vaule = v ;}
private:
char label;
int value[];
}
class InitializeC:public class InitializeAttr
{
public:
settype(char m){lable = m ;}
setvaule(int* v){vaule = v ;}
private:
char label;
int value[];
}
这个设计就非常的灵活。
struct runtimeclass
{
char *classname;
runtimeclass* pbase; //指向它的基类
runtimeclass* next ;
}
class initTab
{
public:
static runtimeclass classname;
virtual runtimeclass* getruntimeclass()const; //用于得到其地址
bool iskindof(const runtimeclass* pclass)const; //用于判断是否属于某一类型
}
class initA
{
public:
static runtimeclass classname;
virtual runtimeclass* getruntimeclass()const;
}
.....