您的位置:首页 > 编程语言 > C语言/C++

C++ Builder中使用System.Generics.Collections

2014-11-20 12:48 148 查看
      本文以TList<T>为例介绍如何在C++Builder中使用System.Generics.Collections提供的类及方法,在C++Builder中使用System.Generics.Collections分两种情况。

 1、对于基本数据类型C++Builder,使用System.Generics.Collections与DELPHI没有什么差别。例如TList<int>,使用在使用单元前要首先引用System.Generics.Collections.hpp头文件。

 #include <vcl.h>

#pragma hdrstop

#include "Unit2.h"

#include <System.Generics.Collections.hpp>/*这个头文件必须引用*/

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

  在这个例子中我定义了一个TList<int>类型的数据,定义编译后正常。向TList<int> 列表中添加内容与DELPHI的区别是DELPHI直接调用TList<T>的Add方法。而C++Builder是调用的TList<T>Items的Add成员函数。而定义TList<int>C++Builder与DELPHI是有区别, DELPH直接定义为TList<int> ,而C++Builder定义为TList__1<int>现将C++Builder的程序代码复制如下:

void __fastcall TForm2::Button1Click(TObject *Sender)

{
TList__1<int> *ilist=new TList__1<int>(); //声明一下TList<int>变量
for (int i = 0; i < 10; i++) {    //向TList添加成员
ilist->Add(i);
}
ilist->Remove(8);//移除一个TList<int>成员,其中移除指定成员
ilist->Delete(0);//移除TList<int>中指定索引成员,该例子是删除ilist列表的第一个成员
ilist->Clear();//删除ilist中的所有成员

}

按照上面的程序写法编译不会出现问题,若是非基本数据类型的列表,在C++Builder中使用会出现编译错误:例如若想定义一个String列表那么在C++Builder中会编译错误。

是不是在C++Builder中,非基本数据类型就不能使用TList<T>的呢。答案是肯定。那么如何能让非基本数据类型使用TList呢,需要有使用前创建一个DELPHI程序单元,在DLPHI程序单元中定义一个类,定义格式如下:

 type

  TSlist=class(TList<string>)

end;

并将此这个程序单元引用到使用TList<String>数据类型的单元中,引用后的程序头文件如下:

这样就解决了TList列表不能在C++Builder使用的问题。依次类推System.Generics.Collections的其他几个泛型数据如

TDictionary等也可以用这种方式解决。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: