-3

我想构造两个不同的类点和三角形?

类的实现是我将有一个点数组,然后我将创建一个三角形数组,所以数组中的每个三角形都将链接到数组中的三个点?

类三角形的最佳数据结构是什么?

编辑:让我解释一下:我有一个名为 Apoints 的点数组,我想创建一个新的三角形对象数组。我想为每个三角形分配三个点。但是,例如,当我更改 Apoints 中的一个点时,也应该在所有具有该点的三角形上实施修改。

谢谢

4

5 回答 5

2

另一个解决方案,这次是 C++11 方式:

class Triangle {
private:
    std::array<Point,3> m_points;

public:
    Triangle(const std::array<Point,3> & points): m_points(points) {}
};
于 2013-05-16T18:33:13.843 回答
1

怎么样:

class Triangle
{
   private:
      Point a;
      Point b;
      Point c;

   public:
      Triangle( Point pa, Point pb, Point pc );
}

这是你要找的吗?

于 2013-05-16T18:21:23.870 回答
1

我将采用最简单的解决方案:

class Triangle {
private:
    std::vector<Point*> vertices;
};
于 2013-05-16T18:22:52.023 回答
1

那这个呢?

class Triangle {
    public:
        Triangle(Point corners[3]) : corners_(corners) {}       
    private:
        Point corners_[3];
};

根据您的评论,也许您会想要这样的东西来避免分配新内存,但同时要确保三角形只有三个点:

class Triangle {
    public:
        Triangle(Point (&corners)[3]) : corners_(corners) {}
    private:
        Point (&corners_)[3];
};

一个小例子可能是这样的:http: //ideone.com/3csNVq

不过要小心所有权和访问已删除的积分!

于 2013-05-16T18:23:30.997 回答
0

如果三角形仅由点组成,则无需将元素一一链接。

struct Point { double c[3]; };

struct Triangle 
{ 
  Point p[3]; 
};

class Triangles
{
public:
  Triangles (Point * point_ptr, size_t const num_points)
    : points(point_ptr), size(num_points)
  { }
  Triangle operator[] (size_t const i)
  {
    size_t p_index = 3*i;
    if (p_index < size)
    {
      return *((Triangle*)points+p_index);
    }
  }
private:
  Point * points;
  size_t size;
};

未经测试,但这就是你可以这样做的方式。

于 2013-05-16T18:48:42.867 回答