2010-12-20 81 views
1

我是新來的Borland C++ Builder的5.0.I都用過,但不是在另一臺機器這是在一臺機器(窗口Server 2003的SP2)成功編譯小STL應用程序(Windows XP機器SP3)。我已經把一個代碼段和錯誤消息在Borland的C++ Builder中構建STL應用5.0

Error E2285 Could not find a match for 'distance<>(const AnsiString *,const AnsiString *,i 
nt) 

我已經打開的Borland C++形式與加入下面的代碼在窗體創建

#include <vcl.h> 
#pragma hdrstop 
#include <vector> 

using namespace std; 
using std::distance; 

static const AnsiString Text_FieldsInTypen[]= 
{ 
    "code_segment_national_2" 
}; 

#include "Unit1.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma resource "*.dfm" 
TForm1 *Form1; 

//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
     : TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 

void __fastcall TForm1::FormCreate(TObject *Sender) 
{ 
    vector<AnsiString> aVec; 
    aVec.push_back("Test"); 

    const AnsiString* Iter; 
    int Index = 0; 
    distance(Text_FieldsInTypen, Iter, Index); 

} 
//--------------------------------------------------------------------------- 
+0

你好。請下次格式化您的代碼:) Ctrl-K。 – 2010-12-20 11:11:06

回答

2

的距離算法利用兩個迭代:

template<class InputIterator> 
    typename iterator_traits<InputIterator>::difference_type 
     distance(
     InputIterator _First, 
     InputIterator _Last 
      ); 

不是三個無關的參數。

Iter也用於在您的代碼中未初始化。

+0

我已經在「iterator.h」文件存在於位置「C檢查:\ Progtam文件\ Borland的\的CBuilder 5 \包括\ RW \ iterator.h如下所示模板<類ForwardIterator,類距離> 它有三個參數內嵌無效距離(ForwardIterator第一,ForwardIterator最後,距離&N) {} ......。 – Senthil 2010-12-20 11:28:30

+0

感謝亞歷克斯,我將調整下一次的代碼。我一直在此錯誤消息掙扎了很長一段時間,同樣的代碼工作在Windows Server 2003中的罰款。請做needfull。 – Senthil 2010-12-20 11:33:51

+0

我已經改變了AnsiString類型爲char *然後它編譯爲使用三個參數距離()。請讓我知道爲什麼它是不能夠識別AnsiString類型 – Senthil 2010-12-20 13:27:06

相關問題