Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
大佬们,如上图(此图出自PETSc4FOAM,一个把PETSc集成到OF中的工作),在声明petscLinearSolverContexts类的时候,可以看到他继承自MeshObject类,奇怪的是MeshOject这个类模板在实例化的时候居然用了petscLinearSolverContexts来实例化模板参数,很奇怪,这是啥用法?这也也可以吗?(感觉这是循环定义啊)有c++大佬指教下吗。不胜感激!
没得问题,只要在这里不使用具体类对象,而使用指针或引用,就不用预先知道类定义。然后模板类里一般都是用静态函数创建模板参数对象(静态函数属于类,不属于某一对象),有点类似全局函数。
@马乔 好的,谢谢!
https://zhuanlan.zhihu.com/p/136258767
@浪迹天大 我去,可以的,谢谢大佬!感谢感谢
自挖自填。再次感谢@浪迹天大 和@马乔 两位大佬的解释,原来这是一种c++ 特性——递归模板模式,也就是 派生类继承自模板类,同时把自己作为参数传递给模板类。这样做的目的其实很明确,从基类对象的角度来看,派生类对象其实就是本身,这样的话只需要用一个static_cast就可以把基类转化成派生类,从而实现基类对象对派生对象的访问。