Здраствуйте!!!
Помогите решить проблему.
Осваиваю создание своих классов на C++ Borland, и у меня такая проблема: Есть файл MyStringList.h, в котором такой код:
class TMyStringList
{
private:
TList *lList;
int __fastcall GetCount();
AnsiString __fastcall GetValue(int iIndex);
void __fastcall SetValue(int iIndex, AnsiString iValue);
public:
TMyStringList();
__property AnsiString Value[int iIndex] = {read = GetValue, write = SetValue};
__property int Count = {read = GetCount};
void __fastcall Clear();
void __fastcall Add(AnsiString iValue);
void __fastcall Delete(int iIndex);
~TMyStringList();
};
TMyStringList::TMyStringList()
{
this->lList = new TList;
}
TMyStringList::~TMyStringList()
{
delete this->lList;
this->lList = NULL;
}
AnsiString __fastcall TMyStringList::GetValue(int iIndex)
{
return *(AnsiString*)this->lList->Items[iIndex];
}
void __fastcall TMyStringList::SetValue(int iIndex, AnsiString iValue)
{
*(AnsiString*)this->lList->Items[iIndex] = iValue;
}
int __fastcall TMyStringList::GetCount()
{
return this->lList->Count;
}
void __fastcall TMyStringList::Add(AnsiString iValue)
{
AnsiString *iVal = new AnsiString;
*iVal = iValue;
this->lList->Add(iVal);
}
void __fastcall TMyStringList::Clear()
{
int i;
for(i=this->lList->Count-1; i>-1; i--)
{
this->Delete(i);
}
this->lList->Clear();
}
void __fastcall TMyStringList::Delete(int iIndex)
{
AnsiString *iValue;
iValue = (AnsiString *)this->lList->Items[iIndex];
delete iValue;
this->lList->Delete(iIndex);
this->lList->Pack();
}
Затем в файле Unit1.cpp, есть код:
TMyStringList *StringList = new TMyStringList();
StringList->Add("123");
ShowMessage(StringList->Value[0]); \\Здесь выводит 123
delete StringList;
ShowMessage(StringList->Value[0]); \\Здесь за место ошибки
Access violation at address), выдает значение "", после чего вылезает ошибка ...class EInvalidPointer with message "Invalid pointer operation"...
Подскажите какие ошибки я допускаю при создании класса?