[英]Typedef-type inside template class gives compile error
实际代码,剥离到最简单的相关部分:
template<class T>
class Ptr
{
private:
typedef Ptr this_type;
public:
typedef T element_type;
};
typedef Ptr<DataSet> DataSetPtr;
template<class BaseType>
class GPtr
{
///force BaseType to be a Ptr or subclass
typedef BaseType::element_type WrappedType;
public:
...
};
如果我删除对BaseType::element_type
的引用,它可以正常编译,但是随着它的出现,我会得到编译警告/错误:
我什GPtr
没有在代码中的任何地方使用 GPtr
作为特定的模板类型...仅包含gptr.h就会导致问题。
怎么了
您必须使用typename
消除歧义词:
typedef typename BaseType::element_type WrappedType;
// ^^^^^^^^^
没有它,编译器将不会将element_type
解析为type的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.