Инициализация представителей указателей структур C++ для интерфейса MATLAB в библиотеку

Несмотря на то, что ваш код может сначала назначить struct и впоследствии назначить значения ее представителям, MATLAB® интерфейс не поддерживает назначение нового объекта представителю указателя. Для примера этот заголовок задает переменный struct S2 с указателем представителя на struct S1.

struct S1 {
   S1() {};
};

struct  S2 {
   S1 *s1;
   S2() {};
};

Предположим, что вы встроили этот код в библиотеку lib. Когда вы пытаетесь ссылаться на указатель s1, это указывает на случайную память, что приводит к непредсказуемому поведению.

s2Obj = clib.lib.S2;
s2Obj.s1

Чтобы обойти эту проблему, инициализируйте указатель внутри определения struct:

struct S1 {
   S1() {};
};

struct  S2 {
   S1 *s1;
   S2() {};
   S1 s1 = S1();   // initialize pointer
};