const short MAX = 20;
Class MainClass
{
public:
MainClass();
~MainClass();
private:
MemberClass * objMemberClass;
} //файл реализации
#include <mainclass.h>
MainClass::MainClass()
{
objMemberClass = new MemberClass[MAX];
}
Т.е, убрать [MAX] в двух местах.
(Подсказка: а) Когда вы пишете type array[max]; последний элемент массива array имеет индекс max-1. Т.е, в вашем случае, objMemberClass[MAX] = new MemberClass[MAX]; записывает указатель на новый массив _за_ границы массива objMemberClass - затирая память не принадлежащую этому массиву, из-за чего скорее всего и segmemntation fault случается; б) смысл того что вы написали: вы обьявляли objMemberClass как "массив указателей на MemberClass", а потом присвоили элементу этого массива который следует за последним эелементом, указатель на новый массив, теперь уже выделенный оператором new. В моем варианте, objMemberClass обьявляется как просто указатель на MemberClass, и потом ему присваивается указатель на массив выделенный оператором new. Кстати, в этом варианте _обязательно_ должен присутствовать деструктор вида:
MainClass::~MainClass()
{
delete [] objMemberClass;
}
)