Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何访问模板类的typedef_C++_Templates_Typedef - Fatal编程技术网

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
before
MANAGER::Object\t
可能重复的
typename
before
MANAGER::Object\t
可能重复的