我正在嘗試將物件的第一個元素發送到函式并修改其屬性并回傳。
我已經創建了一個具有 20000 條光線的 Ray 物件。每條射線都有自己的屬性。我怎樣才能將第一條光線傳遞給一個函式來修改它的一個屬性,因為我不想因為計算時間而傳遞所有光線。
我試圖創建一個接收光線的函式;
std::vector<Ray> hi(std::vector<Ray> bb)
{
bb.bounces ;
return bb;
}
我試圖將第一道光線傳遞為:
hi(rays[0]);
但我收到“不存在從“Ray”到“std::vector<Ray, std::allocator”的合適的使用定義轉換。
謝謝您的幫助。
uj5u.com熱心網友回復:
如果您想傳遞單個Ray,只需這樣做即可。如果你想修改它,將它作為參考傳遞(非常量),可選擇回傳對原始參考的參考:
Ray &hi(Ray &bb)
{
bb.bounces ; // modify the original, passed as reference
return bb; // return reference to original, for convenience
}
或者,如果您不想修改原始光線,而是回傳一個新的、修改后的 Ray,只需不要將其設為參考即可:
Ray hi(Ray bb)
{
bb.bounces ; // argument is value, meaning copy, modify it
return bb; // return the copy
}
或者,通過傳遞 const 參考來實作相同的另一種方法:
Ray hi(const Ray &bb)
{
auto result = bb; // get a copy
result.bounces ; // modify copy
return result; // return copy
}
如果您使用此選項(以上 2 個中的任何一個),則需要通過分配修改原始檔案:
rays[0] = hi(rays[0]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/537142.html
標籤:C 哎呀
上一篇:在初始化期間參考成員是否有效?
下一篇:類模板模板外的靜態成員定義
