c++ - 包含自身实例化的模板,C++ 中的递归

标签 c++ templates recursion

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

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; 
  ...

};

但这似乎行不通。

一般来说,我所做的是建立一个递归结构。通过递归传递通信很容易,但我发现“向上”有麻烦。也许我一开始就错误地设计了这个。

非常感谢!

最佳答案

更一般的情况(这适用于 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;
}

关于c++ - 包含自身实例化的模板,C++ 中的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10278135/

相关文章:

c++ - 为什么 ASIO 套接字 open() 会失败?

c++ - 如何使用模板函数和 CUDA

java - 在多项式时间内使用 DFS 的最小命中集算法

php - 如何消除 Smarty {block} 中的空格?

java - 由于 Java 9 HashMap.computeIfAbsent() 在尝试内存递归函数结果时抛出 ConcurrentModificationException

javascript - 影响父方法变量的递归调用?

c++ - QDial 将范围从 0.00 到 10.00 设置为小部件显示

c++ - QT C++ QRegularExpression 多重匹配

php - 如何向 Wordpress 模板文件添加结束简码?

python - 为什么我的 urls.py 不起作用?