这是我第一次在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/

10-10 16:56