C++ 如何访问模板类的typedef
尝试编译以下代码时:C++ 如何访问模板类的typedef,c++,templates,typedef,C++,Templates,Typedef,尝试编译以下代码时: class Object { }; template <class OBJECT> class Manager { public: typedef OBJECT Object_t; }; template <class MANAGER> class Container { MANAGER::Object_t m_obj; }; Container<Manager<Object> > container;
class Object
{
};
template <class OBJECT>
class Manager
{
public:
typedef OBJECT Object_t;
};
template <class MANAGER>
class Container
{
MANAGER::Object_t m_obj;
};
Container<Manager<Object> > container;
类对象
{
};
样板
班级经理
{
公众:
typedef OBJECT\u t;
};
样板
类容器
{
管理器::对象\u t m_obj;
};
集装箱;
我得到以下错误:
程序cpp:15:错误:类型“MANAGER”不是从类型“Container”派生的
程序cpp:15:错误:应为“;”在“m_obj”之前
谢谢您需要
typename
,因为编译器在解析模板时不知道MANAGER::Object\t
引用了一个类型
typename MANAGER::Object_t m_obj;
第一条错误消息表示编译器将作用域
管理器::
标记视为试图访问容器的基类成员。第二条错误消息表示编译器不知道m_obj
应该是数据成员,因为它没有识别出之前的标记是类型。您需要typename
,因为编译器在解析模板时不知道MANAGER::Object\u t
引用了类型
typename MANAGER::Object_t m_obj;
第一条错误消息表示编译器将作用域管理器::
标记视为试图访问容器的基类成员。第二条错误消息表示编译器不知道m_obj
应该是一个数据成员,因为它没有识别出它之前的标记是一个类型。typename
beforeMANAGER::Object\t
可能重复的typename
beforeMANAGER::Object\t
可能重复的