模板和结构的混合

时间:2009-08-18 13:44:17

标签: c++ templates struct

我有一个模板类定义如下:

template <class T1, class T2>
class MyClass { };

在这个类中,我需要一个包含一个T1类型成员的结构。我怎么能这样做?

我尝试了以下操作,但它不起作用:

template <class T1, class T2>
class MyClass {
    typedef struct {
        T1 templateMember;
        // rest of members
    } myStruct;

    // rest of class definition
};

编辑:根据要求,我使用VS2008并收到以下错误:

'MyClass<T1,T2>::myStruct' uses undefined class 'T1' 

3 个答案:

答案 0 :(得分:2)

只需删除typedef:

template <class T1, class T2>
class MyClass {
    struct myStruct{
        T1 templateMember;
        // rest of members
    } ;
};

答案 1 :(得分:1)

template <class T1>
struct myStruct{
    T1 templateMember;
    // rest of members
};

template <class T1, class T2>
class MyClass {

    myStruct<T1> mystruct;

    // rest of class definition
};

答案 2 :(得分:1)

您确定完全您输入的是什么?

    template <class T1, class T2>
    class MyClass {
    public:
        typedef struct {
            T1 templateMember;
            // rest of members
        } myStruct;

        // rest of class definition
    };

    MyClass<int, float> c;
    MyClass<int, float>::myStruct ms;

这在VS2008 SP1中为我编译和工作正常。请注意,我添加了 public:,以便我可以访问 myStruct ,但这不会影响声明其余部分的正确性。