繁体   English   中英

如何使用指针指向结构的向量?

[英]How to use pointers to point to vector of a struct?

struct Edge;

struct Node {
    int id;
    vector<Edge> *edges;
};

struct Edge {
    int id;
    Node* vertex1;
    Node* vertex2;
};

int main(){
    vector<Edge> nodeEdgeList;
    Node* nodePtr = new Node;
    nodePtr->id = vertex;
    nodePtr->edges = nodeEdgeList;
}

由于最后一行,我收到以下编译器错误。

error: cannot convert 'std::vector<Edge, std::allocator<Edge> >' to 'std::vector<Edge, std::allocator<Edge> >*' in assignment

您的节点 class 有一个向量 * 作为您尝试将非指针设置为指针的成员

这里的错误信息很清楚error: cannot convert 'std::vector<Edge, std::allocator<Edge> >' to 'std::vector<Edge, std::allocator<Edge> >*' in assignment

所以改为:

int main(){
    vector<Edge> *nodeEdgeList = new Vector<Edge>;
    Node* nodePtr = new Node;
    nodePtr->id = vertex;
    nodePtr->edges = nodeEdgeList;
}

要么

int main(){
    vector<Edge> nodeEdgeList;
    Node* nodePtr = new Node;
    nodePtr->id = vertex;
    nodePtr->edges = &nodeEdgeList;
}
int main(){
    vector<Edge> nodeEdgeList;
    Node* nodePtr = new Node;
    nodePtr->id = vertex;
    nodePtr->edges = &nodeEdgeList; // <-- use & before
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM