我想构造两个不同的类点和三角形?在C++中链接两个对象
类的实现是我将有一个点的数组,然后我将创建一个三角形的数组,因此数组中的每个三角形将链接到数组中的三个点?
什么是类三角形的最佳数据结构?
编辑: 让我来解释更多: 我有一个名为Apoints的点的数组,我想创建一个新的三角形对象数组。我想为每个三角形分配三个点。但是,例如,当我在Apoints中更改某个点时,还应在所有具有此点的三角形上执行修改。
谢谢
我想构造两个不同的类点和三角形?在C++中链接两个对象
类的实现是我将有一个点的数组,然后我将创建一个三角形的数组,因此数组中的每个三角形将链接到数组中的三个点?
什么是类三角形的最佳数据结构?
编辑: 让我来解释更多: 我有一个名为Apoints的点的数组,我想创建一个新的三角形对象数组。我想为每个三角形分配三个点。但是,例如,当我在Apoints中更改某个点时,还应在所有具有此点的三角形上执行修改。
谢谢
这个是什么?
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
小心所有权和访问已删除的点虽然!
是的,这就是我正在寻找的......谢谢 –
如何:
class Triangle
{
private:
Point a;
Point b;
Point c;
public:
Triangle(Point pa, Point pb, Point pc);
}
难道这就是你要找的人?
的指针我不想有三角类的新变量。我只想使用参考点,所以当我有PointA,PointB,PointC和PointD。和三角A(点A,点B,点C)和三角B(点B,点C,点D)。当我改变PointB时,两个三角形应该有相同的PointB? –
而不是点,使用指向点的指针,例如:'Point * a'或者只是将索引存储到每个点的Point数组中,例如:'int indexA'。希望这是明确的。 – Frecklefoot
我会用最简单的办法去:
class Triangle {
private:
std::vector<Point*> vertices;
};
这也适用。:) – Frecklefoot
@Frecklefoot我没有看到你的答案,当我点击“答案”,否则我会刚刚投票你:) – GuLearn
+1,但你应该考虑改变'矢量'为'std :: vector'。一旦你完成了这个任务,这个班会成为一个很好的候选人,成为一个“Polygon”......其中一个Triangle只有3分:) –
另一种解决方案,在C++ 11的方式这个时候:
class Triangle {
private:
std::array<Point,3> m_points;
public:
Triangle(const std::array<Point,3> & points): m_points(points) {}
};
+1为C++ 11的方式! – GuLearn
如果三角形只包括你不需要通过一个链接的元素一个点。
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;
};
未经测试,但这是你可以这样做的方式。
你在问一个关于面向对象编程的基本问题。你的问题在你事先做过的研究中很少显示。它尖叫着“我的编程老师的介绍是要求我们这样做,请为我做”。您能否更新您的问题,并针对您的作业提出更具体的问题? – Boumbles
我的兴趣是我已经有点的对象。我想要一个新的三角形对象,它包含我的点而不为它分配新的内存。所以当我改变数组中的一个点时,所有具有这个点的三角形都将被直接改变。 –
你应该阅读关于这个 – Boumbles