-1

我有以下课程:

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's,但我需要它是CPolygon's。如何?

4

1 回答 1

4

您可以使用成员初始化列表

CSquare::CSquare(): CPolygon(TYPE_SQUARE) {}

CPolygon这首先根据正确的类型调用构造函数,然后执行CSquare()构造函数主体。

注意:初始化列表不仅适用于超类,也适用于普通类成员。例如,请参考C++ 成员初始化列表

对于您编辑的问题,使用CPolygon::getData调用指定版本getData

SSquare CSquare::getData(int index)
{
  return CPolygon::getData(index).square;
}
于 2013-08-01T01:48:43.137 回答