常量的隐式转换

时间:2015-07-22 02:16:54

标签: c++

考虑这个简单的代码:

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

1 个答案:

答案 0 :(得分:4)

试试这个:

struct vec
{
    __m128 m128;

    operator __m128&()
    {
        return m128;
    }

    operator const __m128&() const
    {
        return m128;
    }
};

注意第二次重载中的double const。第一个const适用于返回值,第二个适用于操作符本身 - 它表示可以在const限定的对象实例上调用操作符。