C++ 常数的隐式转换
考虑以下简单代码:C++ 常数的隐式转换,c++,C++,考虑以下简单代码: struct vec { __m128 m128; inline operator __m128 &() { return m128; } } void someFunction(const vec &v) { someOtherFunction(v); //takes __m128 as argument } 每当我调用某个函数时,我都会收到一个错误,说我不能从常数v转换为_m128 我已尝试将此添加到结构中 inl
struct vec {
__m128 m128;
inline operator __m128 &() {
return m128;
}
}
void someFunction(const vec &v) {
someOtherFunction(v); //takes __m128 as argument
}
每当我调用某个函数时,我都会收到一个错误,说我不能从常数v转换为_m128
我已尝试将此添加到结构中
inline operator const __m128 &() {
return m128;
}
但是到处都会出现错误,说不能将参数从vec转换为uu m128试试这个:
struct vec
{
__m128 m128;
operator __m128&()
{
return m128;
}
operator const __m128&() const
{
return m128;
}
};
注意第二个重载中的双常量。第一个常量应用于返回值,第二个常量应用于运算符本身-它表示可以在对象的常量限定实例上调用运算符。尝试以下操作:
struct vec
{
__m128 m128;
operator __m128&()
{
return m128;
}
operator const __m128&() const
{
return m128;
}
};
注意第二个重载中的双常量。第一个常量应用于返回值,第二个常量应用于运算符本身-它表示可以在对象的常量限定实例上调用运算符。是否尝试更改运算符本身的常量限定符?i、 e内联运算符const{uu m128&const{…}。对于第二个版本,您将返回一个常量m128,但是使用常量向量调用函数本身并不安全。您是否尝试过更改运算符本身的常量限定符?i、 e内联运算符const{uu m128&const{…}。对于第二个版本,您将返回一个常量m128,但是使用const vecs.works调用函数本身并不安全,我只是不知道为什么。我认为函数上的const限定符意味着this指针不存在,并且你不能访问类/结构,但是你需要访问才能返回m128,不是吗?你把它与静态方法混淆了。静态方法没有this指针。Const方法可以,但this指针是Const在这种情况下,它将是Const vec*this。@成员函数上的Ragdoll Const表示函数不修改对象。它允许对常量对象和引用调用函数。我只是不知道为什么。我认为函数上的const限定符意味着this指针不存在,并且你不能访问类/结构,但是你需要访问才能返回m128,不是吗?你把它与静态方法混淆了。静态方法没有this指针。Const方法可以,但this指针是Const在这种情况下,它将是Const vec*this。@成员函数上的Ragdoll Const表示函数不修改对象。它允许对常量对象和引用调用函数。