Хотя код может сначала назначить структуру, а затем присвоить значения ее членам, интерфейс 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
};