如何为矢量创建吸气剂和吸气剂?

时间:2020-05-02 22:39:45

标签: c++ getter-setter

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我的文件名

2 个答案:

答案 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

在这种情况下仍可以(也应该)使用指针,因为它们可以提高程序的整体速度。