To SmSp: Мое видение проблемы:
У VladimirYU в том коде, что он привел, ошибок нет. Он НЕ объявлял указатель на массив из двух TBase, для чего надо использовать объявление TBase (*Obj)[2]. Он объявил массив из двух указателей на TBase, для чего и использовал правильное объявление TBase *Obj[2]. Это разные вещи, согласитесь.
Чтобы не пускаться дальше в дискуссию об указателях на указатели и о том, что обозначает имя массива, я в Visual C++ Express Edition 2008 собрал простенький пример.
Код
class TBase
{
private:
char char1;
char char2;
public:
TBase( char c1, char c2 ): char1( c1 ), char2( c2 ) {}
void Method1(){ cout << char1 << char2; }
virtual ~TBase(){}
};
TBase* tb[2] = { NULL, NULL };
int _tmain(int argc, _TCHAR* argv[])
{
tb[0] = new TBase( '1', '2' );
tb[1] = new TBase( '3', '4' );
tb[0]->Method1();
tb[1]->Method1();
delete tb[0];
delete tb[1];
return 0;
}
У меня этот код работает правильно и печатает "1234". Можете проверить у себя.
На мой взляд, проблема у VladimirYU в другом, но пока не понятно в чем.
Сообщение отредактировал visual_wind - Sep 18 2009, 13:42