我有以下课程:
class CPolygon
{
SPolygon* data; // will be populated by constructor
// ... members here ...
public:
CPolygon();
CPolygon(int type);
SPolygon getData(int index);
// ... methods here ...
};
class CSquare : public CPolygon
{
// ... members here ...
public:
CSquare();
SSquare getData(int index);
// ... methods here ...
};
第二个CPolygon()
构造函数接受您想要的多边形类型。
有没有办法在CSquare()
构造函数上调用此(第二个)构造函数,传递方形类型的值,如:
CSquare::CSquare()
{
CPolygon(TYPE_SQUARE);
}
制作方形数据?
修改
我添加了新成员和方法/功能。这是结构(和联合):
union SPolygon
{
SHead head;
SSquare square;
// ... more structure here ...
}
struct SSquare
{
SHead head;
// ... more membere here ...
}
我想返回方形数据:
SSquare CSquare::getData(int index)
{
return getData(index).square;
}
但getData()
(在函数内部)被视为CSquare
,但我需要它为CPolygon
。怎么样?
答案 0 :(得分:4)
您可以使用member initialization list:
CSquare::CSquare(): CPolygon(TYPE_SQUARE) {}
首先根据正确的类型调用CPolygon
的构造函数,然后执行CSquare()
构造函数体。
注意:初始化列表不仅适用于超类,也适用于普通的类成员。例如,请参阅C++ Member Initialization List。
对于已修改的问题,请使用CPolygon::getData
来调用指定版本的getData
:
SSquare CSquare::getData(int index)
{
return CPolygon::getData(index).square;
}