如果我有一个带有重载 operator++ 的类,例如:
在标题中:
SomeClass& operator++(int);
实现:
SomeClass& SomeClass::operator++(int) { someLocalVar++; return this; }
如果我随后在 std::unique_ptr
中实例化 SomeClass
:
std::unique_ptr<SomeClass> someClass(new SomeClass());
然后我想调用 operator++
一些 someClass
,我使用:
someClass.get()->operator++(0);
我知道我可以这样做:
SomeClass *ptrSomeClass = someClass.release();
ptrSomeClass++;
但这也很长,并且有点违背了首先使用 std::unique_ptr
的目的。
是否有更好的方法用 std::unique_ptr
调用重载的 operator++
?
最佳答案
与处理指向对象类型的任何其他指针的方式完全相同 - 首先取消引用指针,然后将所需的操作应用于所指向的基础对象。 std::unique_ptr
重载了 ->
和 *
解引用运算符以提供与原始指针类似的语义,例如:
std::unique_ptr<SomeClass> someClass(new SomeClass);
...
someClass->operator++(0);
或者:
std::unique_ptr<SomeClass> someClass(new SomeClass);
...
(*someClass)++;
关于C++:使用 std::unique_ptr 访问重载 operator++ 的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59524408/