При компиляции следующего кода:Cast между двумя эквивалентными C
struct Point {
int x;
int y;
};
struct Position {
int x;
int y;
};
struct Point p = {1, 2};
struct Position q = (struct Position)p;
ошибка происходит:
error: used type 'struct Position' where arithmetic or pointer type is required
Не существует какой-то способ бросить между различными struct
случаях, когда те, на самом деле имеют struct
такое же определение?
Повсеместно указатели: структура Должности * д = (структура Амплуа *) и р; – Shaggi
@Shaggi, в то время как это «работает», это не будет отличаться * экземпляры *. Разнообразность и правильная lvalue сделают то, что ищет OP (не комментируйте, является ли это хорошей идеей). – WhozCraig
@WhozCraig Да, вы правы, ему нужны разные экземпляры :) просто переместите звездочку, как показано в других ответах ... – Shaggi