2016-11-18 5 views
0

私は自分のコードで手続きしています。タイプ ''のタイプ ''の非定数参照の初期化が無効です

class RefC 
{ 
    public: 
     std::string cCommit; 
     std::list<Commit>::iterator itc; 

     RefC(
      const std::string &cod, 
      const std::list<Commit>::iterator &it = std::list<Commit>::iterator() 
     ):cCommit(cod), itc(it) {} 

     RefC(const RefC &orig) 
      : cCommit(orig.cCommit), itc(orig.itc) {} 

     bool operator<(const RefC &rc) const 
     { 
      return cCommit < rc.cCommit; 
     } 
}; 

これは私のREFCクラスですが、私は彼女を呼び出すとき:

indiceCommits.insertar(RefC(comm.getCodigo(),itc)); 

これは私のタイプ「GitCodeの非const参照の

無効な初期化を与える:: RefC & 'のタイプから' GitCode :: RefC '

なぜですか?どうすれば解決できますか?

おかげで;)

答えて

0

問題は、あなたのREFCクラスではなくinsertar()関数の宣言ではありません。私はそれが

insertar(RefC& r); 

のように見えると思いますが、あなたはパラメータの型がconstの-REF

insertar(const RefC& r); 

右辺値である場合にのみ可能である、一時的なオブジェクト(右辺値)を渡したいができるだけで値を意味します割り当ての右側にある、例えばx = y、xは左辺値でなければなりません。通常、名前を持つもの、値を割り当てることができるもの、右辺値(y)は定数、リテラル、一時オブジェクトなどです。

関連する問題