3

非常快速的问题,假设我有一个模板:

template <class T>
class foo {

 private:
   T SubFoo;
  ...

};

然后我有类似的东西:

 foo < foo < int > > myFoo;

效果很好。在这种情况下, myFoo 将有一个名为 myFoo.SubFoo 的成员,其类型为foo < int >

我想在 myFoo.SubFoo 中有一个指向 myFoo 的指针。我不知道如何正确调用它,它是指向整个母类 myFoo 的 SubFoo 的类成员指针。这可能吗?我试图包括声明:

template <class T>
class foo {

 private:
  ...
   T SubFoo;
   foo< foo < T > >* p2mother; 
  ...

};

但这似乎不起作用。

一般来说,我正在做的是建立一个递归结构。在递归中传递通信很容易,但我发现“向上”时遇到了麻烦。也许我一开始就设计错了。

非常感谢!

4

2 回答 2

1

更一般的情况(这在 g++ 中有效):

template <class T>
struct foo {

 //...
 T SubFoo;
 foo* p2mother; 
 //...
};

foo< int > simple;
foo< foo< int > > complex;

int main() {

  simple.p2mother = &simple;
  complex.p2mother = &complex;
}
于 2012-04-23T10:27:43.853 回答
0

(而不是评论)这适用于VS2010,gcc-4.3.4

template <class T>
struct foo {
   T SubFoo;
   foo< foo < T > >* p2mother; 
};

foo<int> foo_instance;

foo<foo<int> > foo_foo_instance;

int main()
{
  foo_instance.p2mother= &foo_foo_instance;
}
于 2012-04-23T10:23:33.780 回答