使用具有相同名称和参数的父类的函数

时间:2013-08-01 01:47:16

标签: c++ class

我有以下课程:

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。怎么样?

1 个答案:

答案 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;
}