这是我第一次在C ++ Builder 6中的AddObject
中使用TStringList
方法。
但是我不能将整数添加到对象列表中。当然,我是通过转换不同类型来实现的。但这不是我想要的。请帮助我更简单
以及为什么对象必须在对象列表中为Tobject*
这是我的简单程序...
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
#pragma argsused
int main(int argc, char* argv[])
{
int r=random(100+1);
TStringList *mylist=new TStringList;
mylist->AddObject("r",(TObject *)r);
int i=mylist->IndexOf("r");
int a=(int)(mylist->Objects[i]);
cout<<a<<endl;
getch();
return 0;
}
最佳答案
为什么对象必须是Tobject *
由于Borland的VCL设计。
mylist-> AddObject(“ r”,(TObject *)r);
不要这样做,因为不能保证TStringList
不会在TObject*
中调用AddObject
的某些方法。例如,它可以调用objectName()
或incrementReference()
(我知道,没有TStringList::incrementReference()
,但这只是一个例子)。
恕我直言,您只需要std::map:
#include <map>
int main()
{
int r=random(100+1);
std::map< AnsiString, int > myList;
myList[ "r" ] = r;
int a = myList[ "r" ];
}
关于c++ - TStringList中的AddObject,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23928572/