非常快速的问题,假设我有一个模板:
template <class T>
class foo {
private:
T SubFoo;
...
};
然后我有类似的事情:
foo < foo < int > > myFoo;
工作正常。在这种情况下,myFoo将有一个名为myFoo.SubFoo的成员,其类型为foo < int >
。
我想在myFoo.SubFoo中有一个指向myFoo的指针。我不知道如何正确地调用它,SubFoo的类成员指针指向整个母类myFoo。这可能吗?我试图包括声明:
template <class T>
class foo {
private:
...
T SubFoo;
foo< foo < T > >* p2mother;
...
};
但这似乎不起作用。
一般来说,我正在做的是建立一个递归结构。在递归中传递通信非常容易,但我发现“向上”的麻烦。也许我首先错误地设计了这个。
非常感谢!
答案 0 :(得分: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;
}
答案 1 :(得分: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;
}