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 テンプレート パラメーターを実行する場合は、次のように挿入して型を参照していることをコンパイラーに知らせる必要がありますtypename

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

また、それを失いtypedef structます。これは C ではなく C++ です。

于 2012-05-15T14:54:30.073 に答える
2

typdefを使用できます

あなたのテンプレートで:

typedef typename MyClass<TYPE3>::MyNode NodeType;

他の場所:

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