1

こんにちは、次のようなプライベート メンバーを持つ C++ クラスがあります。

    template <typename V, typename E>
    class Vertex
    {
     public:
      Vertex();
      ~Vertex();
      typedef std::pair<int, E> edgVertPair;
      typedef std::vector<edgeVertPair> vectEdges;
      void setVertexID(int data);
      int getVertexID();
      void setEdgeVertPair(int vertID, E edge);
      edgVertPair getEdgeVertPair();    
      void setEdgeList(edgeVertPair edgeVert);
      vectEdges getEdgeList();
    private:
      int vertexID;
      edgVertPair evp;
      vectEdges edgeList;  
    };

今、私はペア、つまり次のようなものを作成したい

evp.first="someint"; evp.second="somestring";

次に、この evp を edgeList にプッシュします。つまり、edgeList.push_back(evp); 今問題はセッター関数にあります。私は次のようなことをしました:

    template<typename V, typename E>
    void Vertex<V, E>::setEdgeVertPair(int vertID, E edge){
            ...populate evp;...
    }

EVP ペアに vertID、edge を入力する方法がわかりません。

4

2 に答える 2

2

std::make_pairevpペアを設定するために使用します。

http://www.cplusplus.com/reference/std/utility/make_pair/

于 2012-03-17T22:19:22.203 に答える
1

私の質問に答えてくれたすべての人に感謝します。検索の結果、わかりました。1つの方法は、typedefを削除し、プライベートデータセクションで、変数を次のように直接宣言しました

std::pair<int, E> evp;
std::vector<std::pair<int, E>> edgeList;

そしてそれはうまくいきました。

もう1つの方法は、typedefの前にキーワード「typename」を追加する必要があり、機能しました。

于 2012-03-21T21:59:18.890 に答える