我的代码;
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){
我做错了什么?模板是正确的。
答案 0 :(得分:1)
使用
ngon<T,N> ngon<T,N>::operator=(const ngon<O,N> otyp){
而不是
ngon<T,N> operator=(const ngon<O,N> otyp){
编译器首先注意到运算符在公共域中并且有两个模板列表而不是一个,而不是注意到运算符无效。然后它会输出一些有误导性的错误,即你的模板错误,而不是检测到函数没有被列为成员函数,因为它应该是。