【发布时间】:2013-02-25 09:40:27
【问题描述】:
当我尝试编译这个 (g++) 时:
template<typename T>
struct A {
struct B { };
template<typename S>
friend A<S>& operator +(A<S> const &, A<S> const &);
};
template<typename T>
A<T>& operator +(A<T> const &a, A<T> const &b) {
A<T>::B *x;
return a;
}
main() { }
我明白了
test.cpp: In function "A<T>& operator+(const A<T>&, const A<T>&)":
test.cpp:12:11: error: "x" was not declared in this scope
为什么?
[忽略:如果我不包括这一行,堆栈溢出说我保存时帖子中有太多代码]
【问题讨论】:
-
B是依赖类型,使用typename A<T>::B *x;见stackoverflow.com/questions/610245/… -
main() { }A?这不是有效的 C++。 -
你在声明中使用
S,在operator+的定义中使用T -
粘贴错误。固定的。 (@Joachim)
标签: c++ templates compiler-errors nested-class