我有本地C++包含以下SrcClass
類:C++參數是一個指向常量對象的指針,但不更新對象嗎?
std::vector<shotEntry> objectsQueue;
bool getRelatedEntry(const entryToProcess *entriesDeets, int &i) const {
if (i >= (int)objectsQueue.size()) {
i = 0;
return false;}
if (!objectsQueue.size()) return false;
entriesDeets = &(objectsQueue[i++]);
return true;
}
在我的客戶,我有:
const entryToProcess *entriesDeets = NULL;
int i = 0;
while (srcObj->getRelatedEntry(entriesDeets, i)) {
當我通過getRelatedEntry
形式參數步驟,entriesDeets
更新返回之前預期。當它返回時,客戶端的實際參數沒有更新。
這是我在兩個月後返回的一些大項目。我很確定我做的最後一次重構是引入這些該死的vectors
。當我混淆標題時,需要很長時間才能編譯。我對C#初始化一次/只讀/常量有困惑嗎?我可以逃脫客戶獲得一個只讀的原生對象嗎?
你可能會有興趣用其他方法從函數中返回多個值:http://stackoverflow.com/q/321068/10077 –
在向量中使用指向對象的指針時要小心。如果項目添加到矢量中,可能會發生重新分配,所有內容都將移動,並且指針將無效。 –
我的代碼與用戶界面使用的任何線程完全同步。我從字面上只是抓住指針,將其更新爲屏幕然後丟棄它。 – John