c++ - 常量的隐式转换

标签 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;
}

但是我到处都收到错误消息“无法将参数从 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/

相关文章:

c++ - ')' token 之前的预期不合格 ID?

c++ - 从全局命名空间引用某些东西?

c++ - 变量的多重定义

c++ - 在 Release模式下编译时出错

c++ - 只初始化只读数组一次

c++ - 在 Unity Builds 中创建文件范围的替代方法

c++ - 如何使用字符串的值将字符串转换为 wstring?

c++ - gcc 4.7 和递归 constexpr 函数

c++ - 在树结构中搜索数据

c++ - linux安装sdk后提示No such file or directory,如何解决?