考虑这个简单的代码:
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;
}
然后我到处都出错了说#34;无法将参数从vec转换为__m128
答案 0 :(得分:4)
试试这个:
struct vec
{
__m128 m128;
operator __m128&()
{
return m128;
}
operator const __m128&() const
{
return m128;
}
};
注意第二次重载中的double const。第一个const适用于返回值,第二个适用于操作符本身 - 它表示可以在const限定的对象实例上调用操作符。