void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *tmpstrlist = new TStringList;
tmpstrlist->Add("11111");
tmpstrlist->Add("22222");
tmpstrlist->Add("33333");
AnsiString *anptr = &(tmpstrlist->Strings[1]); //定义AnsiString型指针,指向第二项
Button1->Caption = *anptr; //为什么不是 "22222",而是""
delete tmpstrlist;
}
就这样一段代码
TStringList的Items是AnsiString类型,定义AnsiString型指针,指向第二项,
为什么通过指针不能取到第二项的内容?
十分不理解,哪里的问题,谢谢!!!
谢谢
之所以用指针只是为了提高效率
既然直接构造一个AnsiString对象 ,再考虑一下
不过这种禁用指针还是很强悍,虽然有些霸道,他如何实现的?谢谢
对象的设计其中一个目的就是实现数据的封装,私有数据被对象封装起来,外部不可以直接调用,只能通过其提供的方法访问,一般你使用到的数值调用,大多都是通过Get()和Put()方法调用的,而不是直接通过对象内部数据的地址来访问的。你可以在外部用指针引用对象本身,不可以引用其内部的成员地址,除非你用友元函数或子类。
抱歉,这种建议无法接受。
追答你的指针变量既然调用Add函数,那应该把Add函数也拿出来看看撒
追问tmpstrlist->Strings[1]
是AnsiString类型对象是没任何问题的