使用 STD 向量类的多边形类
Polygon class using the STD Vector class
下面的代码表示一个多边形。我希望能够将一个点(x,y,z 的 gvector3 对象)推到向量"顶点"上。我知道向量有一个push_back方法,但由于我已经将顶点声明为私有,我认为我不能调用vertices.push_back(gvector3 xyz)。有人对我如何实现这一点有任何建议吗?
#ifndef POLYGON_H
#define POLYGON_H
#include <iostream>
#include <gvector3.h>
#include <vector>
class Polygon {
private:
std::vector <gVector3> vertices;
std::vector <gVector3> color;
public:
///----------------------------------------------------------------
/// Constructors
///----------------------------------------------------------------
/// Default constructor
Polygon();
///----------------------------------------------------------------
/// Getters and Setters
///----------------------------------------------------------------
/// Return vertex / reference to vertex at index
gVector3 operator[](unsigned int index) const;
gVector3 &operator[](unsigned int index);
///----------------------------------------------------------------
/// Draw Polygon
///----------------------------------------------------------------
void drawPolygon(const Polygon &p);
};
std::ostream &operator<<(std::ostream &o, const Polygon p);
#endif // POLYGON_H
为您的多边形提供添加顶点的方法?
void Polygon::addVertex(const gVector3 &vec) {
vertices.push_back(vec);
}
您有 2 个选择:
-
添加一个公共方法,它将为您推送
gVector3
,如 Mark H 的答案所示或
-
更改设计。使多边形成为
struct
而不是class
,并以独立函数的形式提供绘制功能。struct Polygon { std::vector <gVector3> vertices; std::vector <gVector3> color; }; void drawPolygon(const Polygon &p);
我看到您已经通过您的 getter 和 setter 提供了对数据的直接访问,因此您不妨公开数据。C++支持对象对象编程,但仅当要封装某些功能时才应使用对象。
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 计算排序向量的向量中唯一值的计数
- 矩阵向量乘法(cublasDgemv)返回零
- 一对向量构造函数:初始值设定项列表与显式构造
- 将结构向量排序为子组
- 使用 STD 向量类的多边形类
- 向量的双倍,以节省距离的每条边在一个多边形