Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c+中自动将模板对象转换为模板指针+;_C++_Templates_Pointers_Casting - Fatal编程技术网

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