我的问题是标题? 如何从模板类返回内部结构?
template<class TYPE3>
class MyClass
{
public:
typedef struct MyNode_type {
int Key;
TYPE3 Data;
}MyNode;
private:
MyNode *m_Root;
//=== My Question is Here =====/
MyClass<TYPE3>::MyNode *getRootNode() {
return m_Root;
}
};
我想从getRootNode函数返回m_Root,但我不知道如何定义它的类型 所以我可以使用像: MyClass :: MyNode * rootnode = cls.getRootNode();
谢谢你的帮助! ..
答案 0 :(得分:2)
执行MyClass<int>::MyNode
时,会正确解析为内部结构类型。但是,如果MyClass<TYPE3>::MyNode
TYPE3
是模板参数,则需要通过插入typename
让编译器知道您指的是类型:
typename MyClass<TYPE3>::MyNode* getRootNode() ...
另外,丢失typedef struct
,这是C ++而不是C.
答案 1 :(得分:2)
您可以使用typdefs
在你的模板中:
typedef typename MyClass<TYPE3>::MyNode NodeType;
别处:
MyClass<TYPE3>::NodeType* pNode = cls.getRootNode();