如何获取指针值?C++

How do i get pointers value? C++

本文关键字:指针 C++ 获取 何获取      更新时间:2023-10-16

所以我想从向量的一项中获取值。矢量包含行项目。直线具有指向顶点*p1和顶点*p2的指针。顶点有x和y的域。我怎么能让我的代码给我x和y值呢?

for(Line<Vertex> line : lines){
    painter.drawLine(line.p1->x + 5, line.p1->y + 5, line.p2->x + 5, line.p2->y + 5);
}

线路等级如下:

template<class T>
class Line {
public:
    T *p1;
    T *p2;
    Line (T *v1, T *v2)
        : p1(v1),
          p2(v2)
    {}
    Line (const Line& l){
        if(this != &l){
            p1 = l.p1;
            p2 = l.p2;
        }
    }
     Line& operator= (const Line& l) {
        if (this == &l)
            return *this;
        p1 = l.p1;
        p2 = l.p2;
        return *this;
    }
    ~Line (){
    }
};

顶点类别:

class Vertex {
public:

    float x = 0;
    float y = 0;
    Vertex() = default;
    Vertex(float nx, float ny);
    float distanceFrom(Vertex v);
};

Main:

std::vector<Line<Vertex>> lines;
Vertex *firstPoint;
Vertex *secondPoint;
bool firstPointChosen = false;
bool secondPointChosen = false;
if(!firstPointChosen){
        for(Vertex vertex : vertices){
            firstPoint = &vertex;
            firstPointChosen = true;
            break;
        }
    }
    else{
        for(Vertex vertex : vertices){
            secondPoint = &vertex;
            secondPointChosen = true;
            break;
        }
    }
if(firstPointChosen && secondPointChosen){
    Line<Vertex> line(firstPoint, secondPoint);
    lines.push_back(line);
    update();
    firstPointChosen = false;
    secondPointChosen = false;
}
for(Line<Vertex> line : lines){
        painter.drawLine(line.p1->x + 5, line.p1->y + 5, line.p2->x + 5, line.p2->y + 5);
    }

如何使第一个代码块返回我添加到行向量的每一行的x和y值?

目前它没有返回任何内容,或者我理解错误。

编辑:主类要大得多,但它是按这个顺序调用的。首先,它选择第一个顶点,然后选择第二个顶点。如果两个顶点都被选中,它会用这两个顶点生成一条新线,但由于某种原因,它们没有值或其他什么。

应该是另一种方式:

线的点值和顶点的成员

for(Line<Vertex> line : lines){
    painter.drawLine(line->p1.x + 5, line->p1.y + 5, line->p2.x + 5, line->p2.y + 5);
}

如果该类具有

T* pointerToMember;
T member;

你应该用->获得有针对性的成员和具有. 的成员

obj->pointerToMember;
obj.member;