伪代码,我不知道这是否编译,但你明白了。返回指向成员数据的指针
class DataHolder
{
void GetData(float* ptr)
{
ptr = dataNeededByOtherClass;
}
float* dataNeededByOtherClass; // Initialized and modified elsewhere
};
class DataUser
{
void DoStuff()
{
float* ptrToData;
dataHolder->GetData(ptrToData);
// ptrToData points to garbage Why?
ptrToData = dataHolder->dataNeededByOtherClass;
// ptrToData now points to the correct data
}
};
我在看什么?
A)“我不知道这是否编译”,为什么你没有尝试编译它? B)指针是按值传递的,这意味着GetData()什么也不做(它修改本地参数)。为什么不直接从GetData()返回'dataNeededByOtherClass'呢? – Borgleader 2014-09-24 13:02:34
数据是一些大小的数组。我还需要分开返回大小。 – TheDespite 2014-09-24 13:05:57
我不明白这是如何阻止你做float * GetData(){return dataNeededByOtherClass; }'。哪一个会更清楚。 – Borgleader 2014-09-24 13:09:39