0
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
4

2 に答える 2

3

Nodeクラスには、非ポインターをポインターに設定しようとしているメンバーとしてベクトル*があります

エラーメッセージはここでかなり明確です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;
}
于 2012-04-07T07:19:16.473 に答える
2
int main(){
    vector<Edge> nodeEdgeList;
    Node* nodePtr = new Node;
    nodePtr->id = vertex;
    nodePtr->edges = &nodeEdgeList; // <-- use & before
}
于 2012-04-07T07:18:07.647 に答える