考虑这个简单的代码:
struct vec {
__m128 m128;
inline operator __m128 &() {
return m128;
}
}
void someFunction(const vec &v) {
someOtherFunction(v); //takes __m128 as argument
}
每当我调用 someFunction 时,我都会收到一条错误消息,提示我无法将常量 v 转换为 __m128
我试过将它添加到结构中
inline operator const __m128 &() {
return m128;
}
但是我到处都收到错误消息“无法将参数从 vec 转换为 __m128
最佳答案
试试这个:
struct vec
{
__m128 m128;
operator __m128&()
{
return m128;
}
operator const __m128&() const
{
return m128;
}
};
注意第二个重载中的双常量。第一个 const 适用于返回值,第二个适用于运算符本身 - 它表示可以在对象的 const 限定实例上调用运算符。
关于c++ - 常量的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31552769/