我有一个模板类定义如下:
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'
答案 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 ,但这不会影响声明其余部分的正确性。