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