exponenta event banner

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

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

struct S1 {
   S1() {};
};

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

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

s2Obj = clib.lib.S2;
s2Obj.s1

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

struct S1 {
   S1() {};
};

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