我是否真的必须使用ClassImp
宏来帮助ROOT中的自动字典和流媒体生成?一些在线教程和示例提到了它,但我注意到只需将ClassDef(MyClass, <ver>)
宏添加到MyClass.h
并使用rootcint/rootcling
处理它已经生成了大部分此类代码。
我确实查看了定义这些宏的Rtypes.h
但是要跟随预处理器宏相互调用并不容易,因此,如果专家可以确认ClassImp
的作用,那将会很好。我对最近版本的ROOT&gt; = 5.34
答案 0 :(得分:1)
以下是我在roottalk邮件列表上得到的答案,确认ClassImp
的使用基本上已过时。
ClassImp用于在TClass中注册源文件的名称 为了上课。这特别是由THtml使用(现在已经有了 被弃用,赞成Doxygen)。所以,除非您编写代码/框架 需要知道源文件的名称,不再需要 有ClassImp。
ClassDef是继承自TObject(或任何来自TObject)的类所必需的 具有ClassDef的类。在其他情况下,它提供 加速器使I / O稍快(因此是 在这种情况下技术上不是强制性的)。它还分配了一个版本 模式布局的编号,简化了编写模式演变 规则(另一方面,还有另一种选择 架构布局的版本号。)
答案 1 :(得分:0)
你到底想要做什么? ClassImp
和ClassDef
宏将成员添加到提供Run-Time Type Information的类,并允许将类写入根文件。如果您对此不感兴趣,请不要为这些宏烦恼。
我从不使用它们。