C++:将对象强制转换为数组
C++: Cast object to array
我正在编写一个矩阵类,我希望能够将固定大小的矩阵强制转换为固定大小的双数组。尽管如此,我在实现适当的强制转换运算符时遇到了问题。到目前为止,我所实现的不起作用:
template<unsigned int M, unsigned int N>
class Matrix
{
typedef double (&ArrayType)[M][N];
public:
operator ArrayType();
}
Matrix<3,3> mat1;
double matArr[3][3];
matArr = mat1;
错误:'sfz::Matrix<的赋值中存在不兼容的类型;3u,3u>'到'double[3][3]'
显式铸造矩阵会导致另一个错误:
错误:ISO C++禁止强制转换为数组类型"double[3][3]"
难道没有办法实现我想要实现的语法吗?
永远不能分配数组。接受它。
为了使您的功能正常工作,您可以制作参考:
double (&ar)[3][3] = mat1;
或者,您可以将裸数组封装在类似std::array<std::array<double, M>, N>
的东西中,然后按值返回。这就是像std::array
这样的包装器存在的原因–它们允许您像对待值一样对待数组。从第一天起,同样的技巧就在C中发挥了作用(将数组放入结构中),但它在C++中实际上很好,可读性很强:
typedef typename std::array<std::array<T, M>, N> type;
operator type() const { return internal_array; }
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何在C++中将数组转换为矢量指针
- 将矢量<T>转换为矢量<数组<T>>
- JSON转换为nlohmann JSON-lib中的结构数组
- 将C++中的数组转换为字符串
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 将 int 数组转换为 std::vector<int*>
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 将链表转换为指针数组时出错
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- 将字节数组转换为带有字节序问题的指针
- 使用 stbi_write_png,如何将 0 和 1 的矩形字节数组转换为单色 png 文件?
- 将浮点数转换为无符号字符数组并打印出来
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 在 c++ 中动态强制转换 ** 数组
- 返回并强制转换数组指针(错误:数组下标的类型..无效)
- 用于递归模板求值的强制转换数组类型
- node.js中使用node-gyp的转换数组
- 如何转换数组中的参数列表