僞代碼,我不知道這是否編譯,但你明白了。返回指向成員數據的指針
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