У меня есть небольшая ошибка, которая дует мне в голову. Возможно, это просто, но я полностью потерян.Значение возврата не такое же, как фактически возвращаемое значение?
У меня есть основной POD struct
:
struct Data{
bool isInvalid=false;
vec3 *vector; //vec3 is another struct with x,y,z components
Node*node;
bool isFresh;
unsigned int *form;
};
У меня есть функция:
Data getData(){
Data forReturn;
//...populates the forReturn struct
cout<<forReturn.vector->x; //logs correctly a value
return forReturn;
}
Журнал cout
правильно показывает, что мое возвращение Data
была заселена. Но когда я называю эту функцию из другой функции, возникает другая история:
Data newData=getData(); //logs as above
cout<<newData.vector->x; //is empty!!
Что здесь происходит ?! Мой журнал выводит эти две строки рядом друг с другом, поскольку они происходят сразу после другого, но что происходит? Это не многопоточность, поэтому переменные и указатели не должны меняться между этими двумя строками!
Можете ли вы показать все определение «данных»? –
Что делает 'forReturn.vector' пункт to? BTW 'forReturn' не является указателем, поэтому' forReturn-> vector' не будет компилироваться. – juanchopanza
sscce please ..... – Pubby