模板类中的Typedef不起作用
我有以下代码的问题:
template <typename U>
class lamePtr
{
public:
typedef U* ptr;
};
template <typename U>
class smarterPointer
{
public:
void funFun()
{
typedef lamePtr<U> someType;
someType::ptr query;
}
};
如你所见,我在lamePtr中有一个typedef。在smarterPointer类里面我有一个函数funFun()。我想做的是制作另一个typedef someType。直到该行,一切正常,直到我们到someType :: ptr查询行。
我想要发生的是“查询”将成为lamePtr&lt; U> :: ptr(一个简单的值,不是typedef;)。但是,我得到编译错误(使用gcc 4.4.3):
temp.cpp: In member function ‘void smarterPointer<U>::funFun()’:
temp.cpp:15: error: expected ‘;’ before ‘query’
我在这做错了什么?
没有找到相关结果
已邀请:
2 个回复
笛驮型迸
,因为
是“从属名称”。这取决于
是否有成员
,如果是,那个成员是什么样的“东西”。 当然,你知道对于所有
,
是一种类型,但在编译的这个阶段,解析器并不知道。 使用
关键字向解析器提示它是一个类型。其余的将在编译过程的后期解决。只是一点点C ++怪癖。
孤捷侩
关键字来表示
是一种类型。
官方说明,什么是typename?细节。