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