我的代码;
template<typename T, int N>
class ngon{
point<T> vertices[N];
...
template<typename O> ngon<T,N>& operator=(const ngon<O,N> otyp);
// O stands for other, as in other type
...
};
...
template<typename T, int N> typename<typename O>
ngon<T,N>& operator=(const ngon<O,N> otyp){
for (int i = 0; i < N; i++)
vertices[i] = point<T>(otyp.vertices[i]);
return this;
}
给出错误;
.\Libraries/.\Geometry\Polygon_D2.hpp:103:11: error: too many template-parameter-lists
ngon<T,N>& operator=(const ngon<O,N> otyp){
我做错了什么?模板是正确的。
最佳答案
采用
ngon<T,N> ngon<T,N>::operator=(const ngon<O,N> otyp){
代替
ngon<T,N> operator=(const ngon<O,N> otyp){
编译器首先会注意到该运算符位于公共(public) Realm ,并且具有两个模板列表而不是一个模板列表,而不是指出该运算符无效。然后,它输出一个有点误导性的错误,即您的模板错误,而不是检测到该函数未如应有的那样被列为成员函数。