掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
STLportのvectorでpush_backするとC2668エラー(解決できない)が出て困っています。回避するには? (ID:58097)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
STLport導入中です。 (iostream、allocatorはVC付属のものを使用) サンプルプログラムをためしにコンパイルして実行してみることにしました。 以下がそのサンプルです。 #include <stdlib.h> #include <tchar.h> #include <string> #include <vector> int _tmain() { int inttest(10); std::vector< int > v_int; v_int.push_back( inttest ); return EXIT_SUCCESS; } このサンプルは、 エラー無し警告無しで、コンパイル、実行できました。 しかし、 #include <stdlib.h> #include <tchar.h> #include <string> #include <vector> int _tmain() { std::string stringtest("Test"); std::vector< std::string > v_string; v_string.push_back( stringtest ); } このプログラムでは、コンパイルエラーが出ました。 エラーメッセージ >C:\STLport-4.6.2\stlport\stl\_vector.h(333) : error C2668: 'std::_Construct' : オーバーロード関数の呼び出しを解決することができません。 >C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xmemory(40): 'void std::_Construct<_Tp,_Tp>(_T1 *,const _T2 &)' である可能性があります。 STLportの_vector.hでは、 >(略) > void push_back(const _Tp& __x) { > if (this->_M_finish != this->_M_end_of_storage._M_data) { > _Construct(this->_M_finish, __x); > ++this->_M_finish; > } >(略) STLportの_construct.hでは >(略) >template <class _T1, class _T2> >inline void _Construct(_T1* __p, const _T2& __val) { ># ifdef _STLP_DEBUG_UNINITIALIZED > memset((char*)__p, _STLP_SHRED_BYTE, sizeof(_T1)); ># endif > _STLP_PLACEMENT_NEW (__p) _T1(__val); >} >(略) VCのxmemoryでは、 >(略) >template<class _T1, > class _T2> inline > void _Construct(_T1 _FARQ *_Ptr, const _T2& _Val) > { // construct object at _Ptr with value _Val > new ((void _FARQ *)_Ptr) _T1(_Val); > } > >(略) となっており、確かに、 同じ関数名になっています。 同じ関数名だから解決できない、というのはよくわかるのですが、 衝突しないようにするにはどうすればいいのでしょうか。 STLportのドキュメントを一通り読んだのですがわかりませんでした。 STLportのallocatorを使用しないのがまずいのかと思って 設定を外したのですが # STLport-4.6.2\stlport\stl\_site_config.h の # #define _STLP_USE_NEWALLOC 1 # このコメント復活させる 同じエラーが出ました。(しっかりメモリリークするようになりました。) 何かヒントになりそうなことだけでも よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.