2010-12-20 78 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

相关问题