Seb*_*ann 0 c++ arrays casting operator-overloading
我正在写一个矩阵类,我希望能够将固定大小的矩阵转换为固定大小的双数组.虽然,我在实施适当的演员操作时遇到了麻烦.到目前为止我实施的内容不起作用:
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;
Run Code Online (Sandbox Code Playgroud)
错误:'sfz :: Matrix <3u,3u>'到'double [3] [3]'的赋值不兼容
明确地转换矩阵会导致另一个错误:
错误:ISO C++禁止转换为数组类型'double [3] [3]'
有没有办法实现我想要实现的语法?
您无法分配数组.和它一起生活.
为了使您的功能有效,您可以参考:
double (&ar)[3][3] = mat1;
Run Code Online (Sandbox Code Playgroud)
或者,你可以换你的裸体阵列中的类似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; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2910 次 |
| 最近记录: |