Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 一个关于OF中C++模板实例化的问题,请大佬们看下!

一个关于OF中C++模板实例化的问题,请大佬们看下!

已定时 已固定 已锁定 已移动 OpenFOAM
6 帖子 3 发布者 4.2k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • MicroM 离线
    MicroM 离线
    Micro
    写于 最后由 编辑
    #1

    d478a3de30aff338d1a57aecd2de588.png
    大佬们,如上图(此图出自PETSc4FOAM,一个把PETSc集成到OF中的工作),在声明petscLinearSolverContexts类的时候,可以看到他继承自MeshObject类,奇怪的是MeshOject这个类模板在实例化的时候居然用了petscLinearSolverContexts来实例化模板参数,很奇怪,这是啥用法?这也也可以吗?(感觉这是循环定义啊)有c++大佬指教下吗。不胜感激!

    1 条回复 最后回复
  • 马乔马 离线
    马乔马 离线
    马乔 大神
    写于 最后由 编辑
    #2

    没得问题,只要在这里不使用具体类对象,而使用指针或引用,就不用预先知道类定义。然后模板类里一般都是用静态函数创建模板参数对象(静态函数属于类,不属于某一对象),有点类似全局函数。

    装逼没输过,吵架没赢过!

    MicroM 1 条回复 最后回复
  • MicroM 离线
    MicroM 离线
    Micro
    在 中回复了 马乔 最后由 编辑
    #3

    @马乔 好的,谢谢!

    1 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    写于 最后由 编辑
    #4

    https://zhuanlan.zhihu.com/p/136258767

    OpenFOAM 学习交流:https://openfoam.top

    MicroM 2 条回复 最后回复
  • MicroM 离线
    MicroM 离线
    Micro
    在 中回复了 浪迹天大 最后由 编辑
    #5

    @浪迹天大 我去,可以的,谢谢大佬!感谢感谢

    1 条回复 最后回复
  • MicroM 离线
    MicroM 离线
    Micro
    在 中回复了 浪迹天大 最后由 编辑
    #6

    自挖自填。再次感谢@浪迹天大 和@马乔 两位大佬的解释,原来这是一种c++ 特性——递归模板模式,也就是 派生类继承自模板类,同时把自己作为参数传递给模板类。这样做的目的其实很明确,从基类对象的角度来看,派生类对象其实就是本身,这样的话只需要用一个static_cast就可以把基类转化成派生类,从而实现基类对象对派生对象的访问。

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]