Vector2D hpp文件
#ifndef Vector2D_hpp
#define Vector2D_hpp
#include <iostream>
#include "Point2D.hpp"
namespace GeoBox{
class Vector2D{
Point2D m_point1{};
Point2D m_point2{};
public:
Vector2D() = default;
Vector2D(Point2D &point1, Point2D &point2)
{
m_point1 = point1;
m_point2 = point2;
}
void setVector(Point2D &point1, Point2D &point2);
};
Vector2D.cpp文件
#include "Vector2D.hpp"
#include "Point2D.hpp"
void GeoBox::Vector2D::setVector(GeoBox::Point2D &point1, GeoBox::Point2D &point2) {
Vector2D(point1, point2);
}
main.cpp
int main(int argc, const char * argv[]) {
GeoBox::Point2D point1{3.0, 1.0};
GeoBox::Point2D point2{2.0, 3.0};
GeoBox::Vector2D vect1{point1, point2};
}
我正在尝试创建一个包含2个点的向量。我如何创建他们的吸气剂和定居者?我想我创建了setter函数,但不确定。 注意:GeoBox我的文件名
答案 0 :(得分:0)
要创建矢量,应将其初始化为模板类型。
对于setter函数,您必须实现可接收两个迭代器(其中一个指向要删除的值的迭代器)或两个迭代器(如果要删除一个指向初始值和最后一个值的元素范围)的Erase()函数。 delete()函数已经是在c ++ 11中实现的功能,但是可以进行开发。
答案 1 :(得分:0)
这似乎可行。为了提高效率,我将您的类更改为存储指针而不是对象。当然,我无法对此进行测试,因为我没有其余的代码,也无法保证您的设置。
#ifndef Vector2D_hpp
#define Vector2D_hpp
#include <iostream>
#include "Point2D.hpp"
namespace GeoBox {
class Vector2D {
Point2D* points[2];
public:
Vector2D() = default;
Vector2D(Point2D* point1, Point2D* point2)
{
setVector(point1, point2);
}
void setVector(Point2D* point1, Point2D* point2) {
points[0] = point1;
points[1] = point2;
}
Point2D* getVector() {
return points;
}
};
}
#endif
要使用结构(在这种情况下没有指针)来执行此操作,则应按以下步骤进行设置:
#ifndef Vector2D_hpp
#define Vector2D_hpp
#include <iostream>
#include "Point2D.hpp"
namespace GeoBox {
class Vector2D {
struct Vector { //Define the struct
Point2D point1;
Point2D point2;
} points; //Create instance of struct
public:
Vector2D() = default;
Vector2D(Point2D point1, Point2D point2)
{
setVector(point1, point2);
}
void setVector(Point2D i_point1, Point2D i_point2) {
points.point1 = i_point1; //Access struct components
points.point2 = i_point2;
}
Vector getVector() {
return points; //return struct
}
};
}
#endif
在这种情况下仍可以(也应该)使用指针,因为它们可以提高程序的整体速度。