掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
STL を引数で受け取り、イテレータでまわすには? (ID:72022)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは VC++6.0 SDK, Windows XP でWindowsプログラミングをしています。 STLのコンテナ(?)のポインタや参照を引数で受け取り、 コンテナへデータを取得する処理と、コンテナのデータを設定する処理を 実装したいのですが、自分の思う通りにいきません。 取得は、 void GetData(std::map< std::string, std::string > * lpValue) const; として実装できたのですが、 設定は、 void SetData(std::map< std::string, std::string > const * const lpValue); でも void SetData(std::map< std::string, std::string > const & value); でも、 {for (std::map< std::string, std::string >::iterator itr = value.begin(); itr != value.end(); ++ itr) { }} ここでコンパイルエラーになってしまいました。 エラーメッセージはでるのですが、なにがなんだか・・・。どう直せばいいのでしょうか? error C2440: 'initializing' : cannot convert from 'class std::_Tree<class std::basic_string<char,struct std::char_traits<char> ,class std::allocator<char> >,struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator <char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,struct std::map<clas s std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::c har_traits<char>,class std::allocator<char> >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,clas s std::allocator<char> > >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocato r<char> > > >::_Kfn,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > ,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::const_itera tor' to 'class std::_Tree<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std:: pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<ch ar,struct std::char_traits<char>,class std::allocator<char> > >,struct std::map<class std::basic_string<char,struct std::char_ traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char > >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allo cator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::_Kfn,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<class std::basic_stri ng<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator' ちなみに、 (A)void SetData(std::map< std::string, std::string > * lpValue); (B)void SetData(std::map< std::string, std::string > & value); (C)void SetData(std::map< std::string, std::string > value); これらはコンパイルが通ることを確認しました。 しかし、(A)(B)においては、値を変更しないことを明記したいです。 (C)は値渡しになるので、ロスの小さいポインタ渡しか参照渡しにしたいです。 どうぞよろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.