C++ 在c+中自动将模板对象转换为模板指针+;
我有一个C++ 在c+中自动将模板对象转换为模板指针+;,c++,templates,pointers,casting,C++,Templates,Pointers,Casting,我有一个URes类,它包含一个指向的单指针,并重载了间接运算符->和*,因此我可以直接将实例用作指针 但是,我还希望能够将我的URes实例传递给通常在URes实例中使用指针的函数 如何使实例对象在传递给函数时自动转换为它所包含的指针 与创建任何出站转换的方法相同:通过声明和定义运算符 在这种情况下,您需要一个成员操作符T* : 模板 结构Foo{ 算子T*(){ 返回0; } }; 空条(int*p){} int main(){ 福福; 巴(f); } 但是,我建议避免这种情况,而是实现一个成
URes
类,它包含一个指向
的单指针,并重载了间接运算符->
和*
,因此我可以直接将实例用作指针
但是,我还希望能够将我的URes
实例传递给通常在URes
实例中使用指针的函数
如何使实例对象在传递给函数时自动转换为它所包含的指针 与创建任何出站转换的方法相同:通过声明和定义运算符 在这种情况下,您需要一个成员
操作符T*
:
模板
结构Foo{
算子T*(){
返回0;
}
};
空条(int*p){}
int main(){
福福;
巴(f);
}
但是,我建议避免这种情况,而是实现一个成员
T*get()
。调用范围从对象获取指针应该是一个明确的步骤。与创建任何出站转换的方法相同:通过声明和定义运算符
在这种情况下,您需要一个成员操作符T*
:
模板
结构Foo{
算子T*(){
返回0;
}
};
空条(int*p){}
int main(){
福福;
巴(f);
}
但是,我建议避免这种情况,而是实现一个成员
T*get()
。调用作用域从对象获取指针应该是一个明确的步骤。您可以通过提供从该类到指针类型的转换运算符来实现这一点:
class Foo {
public:
operator int() const { // enables implicit conversion from Foo to int
}
};
请注意,这种隐式转换。您可以通过提供从该类到指针类型的转换运算符来实现:
class Foo {
public:
operator int() const { // enables implicit conversion from Foo to int
}
};
请注意,这种隐式转换。请学习设置您的帖子格式;三个月的学习时间足够了!请学会格式化你的帖子;三个月的学习时间足够了!我已经让*操作符过载了,这意味着我可以走了吗?我认为我必须实现一些强制转换。@ddriver:这不是
T&operator*()
,而是operator T*()
-注意区别。@ddriver:你是说“转换”;强制转换是一种显式转换,与此无关。我已经重载了*运算符,这是否意味着我可以继续?我认为我必须实现一些强制转换。@ddriver:这不是T&operator*()
,而是operator T*()
-注意区别。@ddriver:你是说“转换”;强制转换是一种显式转换,与此无关。它仍然是用户定义转换的有效示例,不是吗?是的,但不是问题中要求的用户定义转换:PIt仍然是用户定义转换的有效示例,不是吗?是的,但不是问题中要求的用户定义转换:P