template <typename T>
class A {
class B {
typedef int INT;
INT func(double e) {
return INT(e * 3.6);
}
};
};
Run Code Online (Sandbox Code Playgroud)
我的问题是func从类声明中删除函数的定义.这是我的程序的简化案例.编译器抱怨typedef.
这是我的尝试:
template <typename T>
A<T>::B::INT A<T>::B::func(double e) {
return INT(e * 3.6);
}
Run Code Online (Sandbox Code Playgroud)
编译器错误是 main.cpp:14: error: expected constructor, destructor, or type conversion before "A".
g ++ 4.7直接指出了这个问题:
$ g++ 3.cpp
3.cpp:12:1: error: need 'typename' before 'A<T>::B::INT' because 'A<T>::B' is a dependent scope
Run Code Online (Sandbox Code Playgroud)
所以:
template <typename T>
typename A<T>::B::INT A<T>::B::func(double e) {
// ^^^^^^^^
return INT(e * 3.6);
}
Run Code Online (Sandbox Code Playgroud)