当天的第二个模板问题,什么是n00b:
我有一个模板类:
template <class T>
class foo{
private:
//...
T SubFoo;
//...
};
我还有一个名为myClass的类。我想有这样的对象:
foo<myClass> myObject;
但是,这就是问题所在,我希望能够从myObject.SubFoo获取指向myObject的指针。这意味着类myClass的一个成员应该是模板类foo的实例化。
所以我能做到:
class myClass{
//...
foo<myClass>* point2myClass;
}
然而,似乎这不起作用,因为
./ foo.h:103:错误:'foo :: SubFoo'类型不完整
定义myClass时,程序会找到行
foo<myClass>* point2myClass;
这是foo的定义,它发现:
T SubFoo;
但是T,在这种情况下是myClass,尚未定义(这是程序正在做的!),所以它不知道T是什么,因此错误。
如果我交换声明的顺序,它也会失败,因为不会定义“foo”。
我怎样才能做到这一点?
万分感谢!
答案 0 :(得分:1)
以下代码,绝对可以正常工作。如果您的代码不同,请指明在哪里。
template < typename T >
struct A
{
T x;
};
struct X
{
A<X>* x;
};
int main()
{
X a;
}