包含在智能指针中的类的运算符重载

Den*_*nis 5 c++ smart-pointers operator-overloading c++14

我一直在尝试在一个包含在智能指针中的类上进行一些运算符重载(*和+).

auto p = std::make_unique<Polynomial<T>>();
Run Code Online (Sandbox Code Playgroud)

当我尝试使用正常重载来重载它时,它显然要求智能指针类型.

编辑,所以:

std::unique_ptr<Polynomial<T>> operator+(const std::unique_ptr<Polynomial<T>>& right);

template<class T>std::unique_ptr<Polynomial<T>> Polynomial<T>::operator+(const std::unique_ptr<Polynomial<T>>& right) {
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

而错误:

尝试使用+运算符时出错

那么当类封装在smartpointer中时,如何重载正常运算符呢?

Lig*_*ica 11

别.

在指针上运行这些操作,而不是在指针上:

*p = *p + *p
Run Code Online (Sandbox Code Playgroud)

如果突然指针具有完全不同且意外的语义,那么对于代码的用户来说会非常混乱.

这对你来说也很困惑.