1

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

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

感谢您的帮助!..

4

2 回答 2

2

当您这样做时MyClass<int>::MyNode,将正确解析为内部结构类型。但是,当您执行MyClass<TYPE3>::MyNodewhere TYPE3is a template parameter 时,您需要通过插入让编译器知道您指的是一个类型typename

typename MyClass<TYPE3>::MyNode* getRootNode() ...

另外,丢掉那个typedef struct,这是 C++ 而不是 C。

于 2012-05-15T14:54:30.073 回答
2

您可以使用类型定义

在您的模板中:

typedef typename MyClass<TYPE3>::MyNode NodeType;

别处:

MyClass<TYPE3>::NodeType* pNode = cls.getRootNode();
于 2012-05-15T15:58:49.963 回答