gpt4 book ai didi

c++ - 仅为专用模板类定义转换运算符

转载 作者:太空宇宙 更新时间:2023-11-04 16:03:45 25 4
gpt4 key购买 nike

我想为矩阵<1, 1> 定义 float 转换。我很难弄清楚如何实际定义它。如果我使它成为一个全局函数

template<typename T>
inline operator T(const matrix<T, 1, 1> &m){ return m(0, 0); }

我得到“运算符..必须是一个非静态成员函数”

我当然可以将它定义为通用矩阵模板的成员,但随后它将为所有矩阵定义 - 这不是我想要的。我希望它只针对 1x1 矩阵的特定情况进行定义。

最佳答案

你必须为此特化一个类,例如:

template <typename Base, typename T, std::size_t W, std::size_t H>
struct MatrixConversion
{ /*Empty*/ };

template <typename Base, typename T> struct MatrixConversion<T, 1u, 1u>
{
operator const T&() const { return static_cast<const Base&>(*this).m[0][0]; }
};


template <typename T, std::size_t W, std::size_t H>
struct Matrix : MatrixConversion<Matrix<T, W, H>, T, W, H>
{
// Your code
};

关于c++ - 仅为专用模板类定义转换运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39062910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com