【发布时间】:2011-07-12 09:59:26
【问题描述】:
我是 C++ 新手,我正在尝试使用模板,但遇到了问题。 我要做的是:尝试使用模板计算数字的平方,该数字可能是基本数据类型,如 int、float 以及复数。我也用模板实现了一个复杂的类,代码如下:
template <typename T>
class Complex {
public:
T real_;
T img_;
Complex(T real, T img) : real_(real), img_(img) { }
};
template <typename T>
T square(T num) {
return num * num;
}
template <>
Complex<typename T> square(Complex<typename T> num) {
T temp_real = num.real_*num.real_ - num.img_*num.img_;
T temp_img = 2 * num.img_ * num.real_;
return Complex(temp_real, temp_img);
}
我尝试使用模板专业化来处理特殊情况,但它给了我错误:
using ‘typename’ outside of template
并且错误发生在模板专业化方法上。请指出我的错误。谢谢。
【问题讨论】:
-
不是答案,但请注意
<complex>标头,它可能完全不需要任何代码。
标签: c++ templates specialization