其他人使用的头文件类文件

Jon*_*han 1 c++ private header class public

我想知道是否有一种方法只在头文件.h上放置受保护和公共的东西,以及编译单元.cpp中的所有私有东西我需要这个,因为该库将被其他人使用,而我不希望复制和编辑所有.h文件以删除私有声明和实现.我试过但得到了重复声明错误

另一个问题是关于私有静态的东西我可以在头文件中声明它们并在.cpp单元上实现它们吗?一个私有变量和一个公共的get方法我试过但是无法在单元上实现该方法,它只适用于头上的声明和实现

[] s,乔

and*_*ykx 22

处理这个问题的正确方法是实现pimpl习惯用法:为所有私有数据创建一个类或结构,并在头文件中放置一个指向这样一个对象的指针,以及一个前向声明.现在,从头文件中看不到任何私有数据和方法.


dcw*_*dcw 5

对此的正确答案是使用Pimpl(通过指针,如Pavel指出的那样).在Matthew Wilson的Imperfect C++中也有一种疯狂但可能正确的方法,你可以转发声明一个内部结构并在你的类中包含一个不透明的内存块,然后就地构造内部结构(其定义在实现文件)在实现文件的主类构造函数中.

我应该指出,威尔逊在一个附录中表明了这一点,他承认了几个这样的"反编程犯罪",作为程序员试图过于聪明的警告.他说,我说,你不应该使用它.但是,如果你有一些压倒一切的严格的性能要求,这是可能的,这可能是一些使用.