【发布时间】:2012-01-04 23:26:45
【问题描述】:
这是一个简化的例子:
template<typename T>
class MyTemplate
{
class Inner {};
Inner met();
};
template<typename T>
MyTemplate<T>::Inner MyTemplate<T>::met()
{ }
我收到以下编译错误:
expected constructor, destructor, or type conversion before 'met'
我使用 GCC。似乎编译器无法将 MyTemplate<T>::Inner 识别为正确的类。我怎样才能解决这个问题?我尝试在这里和那里粘贴typename 关键字无济于事。现在,我可以设法编译它的唯一方法是在类声明中内联方法定义,我想避免这种情况。
【问题讨论】:
-
typename MyTemplate<T>::Inner MyTemplate<T>::met()我的 GCC 4.6 对你的代码很满意。您使用的是哪个版本的 GCC?