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个点组成的向量,如何创建它们的getter和setter?我想我创建了setter函数,但我不确定.注:GeoBox我的文件名是 "GeoBox"。
要创建一个向量,你应该把它初始化为一个模板类型。
对于setter函数,你必须实现擦除()函数,该函数可以接收两个迭代器,一个迭代器指向你要删除的值,如果你要删除一个指向初始值和最后一个值的元素范围,则可以接收两个迭代器。 erase()函数已经是c ++ 11中实现的函数,但可以开发。
其似乎这样做可能会成功。为了提高效率,我把你的类改成了存储指针而不是对象。当然,我不能测试这一点,因为我没有你其余的代码,不能保证你的设置。
#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
指针可以(也应该)在这种情况下使用,因为它们可以提高程序的整体速度。