Несмотря на то, что ваш код может сначала выделить struct и впоследствии присвоить значения его членам, интерфейс MATLAB® не поддерживает присвоение нового объекта члену указателя. Например, этот заголовок задает переменную S2 struct с указателем члена на 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
};