如何在派生构造函数中多次构造基类

时间:2018-09-25 08:11:24

标签: c++ inheritance

你好,我在分配作业时遇到问题,我需要初始化基本构造函数,该构造函数在多边形的派生构造函数中指向多次。

该多边形至少具有3个点,每个点都有一个坐标值。有谁有想法如何在构造函数init中多次初始化基本构造函数? 继承的想法不是我的想法,是分配问题。

这是问题

多边形(构造函数)创建一个具有n个顶点的多边形,这些顶点从数组点中存储的值中获取其值。注意,数组点不应该被认为是持久的。调用构造函数后,可以将其删除。

struct PointType
{
  float x;
  float y;
};

class Point 
{ 
public:  
  Point(const PointType& center );
  virtual ~Point();  
 private:
  PointType m_center;
};

class Polygon : public Point
{ 
public:  
  Polygon(const PointType* points, int npoints);  
  ~Polygon();  
  const VectorType& operator[](int index) const;  
  private:
  int m_npoints;
  Object::PointType * m_pt;
    }; 


#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include "Object.hpp"
using namespace std;


const float eps = 1e-5f;

bool Near(float x, float y)
{
  return abs(x-y) < eps;
}


float frand()
{
  return 10.0f*float(rand())/float(RAND_MAX);
}


int main()
{
  srand(unsigned(time(0)));
  int count = 0,
      max_count = 0;

  // Polygon tests
  int n = 3 + rand()%8;
  float *xs = new float[n],
        *ys = new float[n];
  float x = 0, y = 0;
  PointType *Ps = new PointType[n];
  for (int i=0; i < n; ++i) {
    xs[i] = frand(), ys[i] = frand();
    Ps[i] = PointType(xs[i],ys[i]);
    x += xs[i], y += ys[i];
  }
}
Point::Point(const PointType& center)
: m_center{center}
{

}

 // this is wrong, can correct me how to construct it?
 Polygon::Polygon(const PointType* points, int npoints, float depth)
   :m_npoints{npoints} , m_pt{new Object::PointType[npoints]}, Point    (*m_pt ,depth)
{
  for(int i=0; i < m_npoints ; ++i)
  {
    m_pt[i] = points[i];
  }
}

    enter code here

这个分配结构就像 enter image description here

我取消了其他对象类的实现

2 个答案:

答案 0 :(得分:0)

您的作业文本未提及继承。它实质上描述了组成。从这里走:

class Polygon
{ 
public:  
  // constructor should allocate the array
  Polygon(const PointType* points, int npoints);  
  ~Polygon();  
private:
  Point *m_npoints; // or use smart pointer if you're allowed to.
 }; 

答案 1 :(得分:0)

这是一个棘手的问题,实际上是要我找到多边形的质心点。

所以我需要一个私有的多边形函数计算中心点,并返回多边形中心点的结果,然后在初始化时在点构造器中调用该函数。