Что касается первого фрагмента, вы получаете эту ошибку, потому что массивы в C не могут быть назначены. Вы должны выполнить memcpy
для копирования массивов.
Что касается второго фрагмента, у вас есть проблема со следующей строкой:
particle->material[i][j] = emitter->material[i][j];
Член material
в Emitter
представляет собой двумерный массив типа float*
. Элемент material
в Particle
имеет тип float
. Обратите внимание, что один является указателем, а другой - нет, поэтому они не могут быть назначены.
Вы можете написать следующее:
particle->material[i][j] = *(emitter->material[i][j]);
Но это при условии, что вы указали эти указатели на точку на что-то. Кроме того, вы можете изменить material
в Emitter
, чтобы он не был указателем. Я не могу сказать вам, что вы должны делать наверняка, потому что мне трудно расшифровать, какие именно ваши намерения основаны на коде, который вы дали.