64,644
社区成员
发帖
与我相关
我的任务
分享
我觉得最好是改成抽象类,通过抽象基类指针来实现实例化各个派生类
class CAbstrctUnit
{
protected:
int m_ChartType;
public:
int virtual returnValue() = 0;
};
class CFilyChartUnit:public CAbstrctUnit
{
public:
CFilyChartUnit(){};
int returnValue(){m_ChartType = 0;return m_ChartType; }
};
class CFilyChartUnit1:public CAbstrctUnit
{
public:
CFilyChartUnit1(){};
int returnValue(){m_ChartType = 1;return m_ChartType;}
};
class CFilyChartUnit2:public CAbstrctUnit
{
public:
CFilyChartUnit2(){};
int returnValue(){m_ChartType = 2;return m_ChartType;}
};
CAbstrctUnit* returnType(int m_value)//最后返回的都是基类指针,然后根据多态性,动态绑定到各个派生类上
{
switch(m_value)
{
case 0:
return new CFilyChartUnit();//返回Unit
case 1:
return new CFilyChartUnit1();//返回Unit1
case 2:
return new CFilyChartUnit2();//返回Unit2
break;
}
}
void main()
{
CAbstrctUnit* FilyChartUnit = returnType(2);
int a = FilyChartUnit->returnValue();//测试打印出来的值
printf("%d\n",a);
}
class CAbstrctUnit
{
public:
int virtual returnValue() = 0;
~virtual CAbstrctUnit(){}
};
class CFilyChartUnit:public CAbstrctUnit
{
public:
int returnValue(){m_ChartType = 0;return m_ChartType; }
private:
int m_ChartType;
};
class CFilyChartUnit1:public CAbstrctUnit
{
public:
CFilyChartUnit1(){};
int returnValue(){m_ChartType = 1;return m_ChartType;}
private:
int m_ChartType;
};
class CFilyChartUnit2:public CAbstrctUnit
{
public:
CFilyChartUnit2(){};
int returnValue(){m_ChartType = 2;return m_ChartType;}
private:
int m_ChartType;
};
class Factory{
public:
CAbstrctUnit* createCFilyChartUnit(){new CFilyChartUnit;}
CAbstrctUnit* createCFilyChartUnit1(){new CFilyChartUnit1;}
CAbstrctUnit* createCFilyChartUnit2(){new CFilyChartUnit2;}
};