如何从模板类返回内部结构

时间:2012-05-15 14:49:40

标签: c++ templates struct

我的问题是标题? 如何从模板类返回内部结构?

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();

谢谢你的帮助! ..

2 个答案:

答案 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();