在 C++ 智能指针实现中调用 "operator T()"
invoking "operator T()" in c++ smart pointer implementation
我正在使用一些包含以下运算符的智能指针实现:
template<class T>
class my_unique_ptr {
public:
...
operator T() {
return _t;
}
T *operator &() {
return &_t;
}
private:
T _t;
};
我希望从指针 class 包装的类型 T 中获取原始值。
&
运算符工作正常,但它给出了我的指针而不是值本身。
因此,我希望调用 T()
运算符(就像 std::unique_ptr
中的 get()
)
我试图直接使用该变量,但它引用的是 my_unique_ptr<T>
而不是 T
。
void func(myClass c);
int main()
{
my_unique_ptr<myClass> x = new myClass(..);
func(x);
}
但我收到无法从类型 'my_unique_ptr' 转换为指针类型 'myClass'
的错误
如何呼叫这个接线员?
How can I call this operator ?
当您在对象上使用 &
时,将调用该函数。
my_unique_ptr<myClass> x = new myClass(..);
auto ptr = &x;
此处,ptr
的类型为 myClass*
。能够使用
func(x);
您必须定义一个转换运算符。
operator T&() {
return _t;
}
我正在使用一些包含以下运算符的智能指针实现:
template<class T>
class my_unique_ptr {
public:
...
operator T() {
return _t;
}
T *operator &() {
return &_t;
}
private:
T _t;
};
我希望从指针 class 包装的类型 T 中获取原始值。
&
运算符工作正常,但它给出了我的指针而不是值本身。
因此,我希望调用 T()
运算符(就像 std::unique_ptr
中的 get()
)
我试图直接使用该变量,但它引用的是 my_unique_ptr<T>
而不是 T
。
void func(myClass c);
int main()
{
my_unique_ptr<myClass> x = new myClass(..);
func(x);
}
但我收到无法从类型 'my_unique_ptr' 转换为指针类型 'myClass'
的错误如何呼叫这个接线员?
How can I call this operator ?
当您在对象上使用 &
时,将调用该函数。
my_unique_ptr<myClass> x = new myClass(..);
auto ptr = &x;
此处,ptr
的类型为 myClass*
。能够使用
func(x);
您必须定义一个转换运算符。
operator T&() {
return _t;
}