当天的第二个模板问题,多么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”不会被定义。
我怎样才能使这项工作?
太感谢了!