0
我有變量buff,它有overloaded = operator。 這個變量在lambda中被使用並且被指針傳遞。 當我想用這個操作符,我會做:在指針上執行運算符而不會解除引用
*buf=CreateBuffer(w, h, type, c);
然而,它取消引用指針和析構函數被調用時的範圍不應該發生的結束。
所以要防止析構函數的調用我做的:
buf->operator=(CreateBuffer(w, h, type, c));
有沒有其他的通常慣例,實現=運算符沒有這個長的版本?
'CreateBuffer'是否按照值返回任何類型的'* buf'?然後,你不能真正阻止析構函數被調用,因爲'CreateBuffer'的返回創建了一個需要在兩種情況下都被破壞的臨時對象。我真的懷疑這是你的*根*問題,也許如果你給出更多的細節*爲什麼*你不希望析構函數被調用我們可以幫助你更好?你有什麼*實際*問題?你有沒有遇到問題,因爲你沒有遵循[三,五或零的規則](http://en.cppreference.com/w/cpp/language/rule_of_three)? –
如果'buf'是一個常規指針,那麼這些指針完全相同。 (都是'(* buf).operator =(CreateBuffer(w,h,type,c));'。)請發佈相關代碼而不是描述它。 – molbdnilo