template <class T>
class A {
struct B {
T a,b;
}
B& operator+ (B & x, B & y) {
return B(x.a + y.a, x.b + y.b);
}
int funcA (B & x, B & y){
return (x + y).a;
}
};
正如您可能猜到的那样,在编译期间我得到“运算符+必须采用零或一个参数”。正确的。因为在 operator+ 中,“this”作为第一个参数传递。因此,解决方案是将运算符定位在 A 类定义之外。但是 A 的函数 funcA 使用 operator+。所以它必须在A之前定义。但是operator+本身使用A中定义的类B,它本身是一个模板,B是依赖类。
解决方案是什么?