se0*_*808 4 c++ templates casting
这看起来很奇怪,但这个简单的代码使用int而不是T,并且不适用于模板T.
template <typename T>
class Polynomial {
public:
    Polynomial (T i) {}
    Polynomial& operator+= (const Polynomial& rhs) {
        return *this;
    }
};
template <typename T>
const Polynomial<T> operator+ (Polynomial<T> lhs_copy, const Polynomial<T>& rhs) {
    return lhs_copy += rhs;
}
Polynomial<int> x (1), y = x + 2; // no match for 'operator+' in 'x + 2'
在模板参数推导期间,隐式转换不适用,您可能会渲染您的函数friend(以便类型已知):
template <typename T>
class Polynomial {
public:
    Polynomial (T i) {};
    Polynomial& operator+= (const Polynomial& rhs) { return *this; };
    friend Polynomial operator+ (Polynomial lhs, const Polynomial& rhs) {
        return lhs+=rhs;
    }
};
还有关:C++加载过载模糊
| 归档时间: | 
 | 
| 查看次数: | 106 次 | 
| 最近记录: |