Инициализация массива внутри класса
Задача, необходимо иметь массив указателей на элементы класса.
Пример решения:
typedef struct {
int a;
int *p;
}Tarray;
class TCtest
{
public:
TCtest(void)
{
initarray();
}
~TCtest(void){}
void initarray(void)
{
const Tarray arr[]=
{
{1,&a1},
{2,&a2},
{3,&a3},
};
ar=(Tarray*)arr;
}
int a1,a2,a3;
Tarray * ar;
};
int main(void)
{
TCtest c1;
TCtest c2;
c1.a1 = 11;
c1.a2 = 22;
c1.a3 = 33;
c2.a1 = 44;
c2.a2 = 55;
c2.a3 = 66;
printf("A1=%d A2=%d A3=%d\r\n",*c1.ar[0].p,*c1.ar[1].p,*c1.ar[2].p);
printf("A1=%d A2=%d A3=%d\r\n",*c2.ar[0].p,*c2.ar[1].p,*c2.ar[2].p);
return(0);
}
Вывод программы
Output:
A1=11 A2=22 A3=33
A1=44 A2=55 A3=66
Какие ещё могут быть варианты?
Какие недостатки решения?