我正在实现智能指针类的练习。
我已经定义了一个赋值运算符重载,它采用同一类的另一个实例。现在我想定义这个运算符的重载,它接受任何指针。所以我应该能够做类似 smartPointer = &someObject;
或 smartPointer = NULL;
等的事情
我该怎么做呢?我应该传入一个 void*
吗?还有别的吗?
作为一个更一般的问题(我知道这很少需要):什么样的参数告诉编译器可以传入任何指针?
最佳答案
您可以使用模板函数让您的对象允许任何指针分配给它。
template<typename T>
void operator=(T* obj)
{
//Your code here
}
但是,如果您可以为它分配任何原始指针,它就不是智能指针,因为它可以分配给多个智能指针对象,然后在删除指针时会出现问题。
关于c++ - 我如何定义一个将任何类型的指针值作为参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26267510/