目前,我正在通过 dllexport 从 DLL 导出一些类,并且我正在将私有成员设置为私有,因此我为 DLL 提供的标头不包含任何私有内容。
问题是:现在编译器不知道类的大小,它认为我正在分配一个空类(1字节大小),这个信息不应该在由DLL生成的.lib中可用吗?我无法隐藏私人数据吗?
需要明确的是,DLL 标头使用 __declspec(dllexport) 和部署标头 __declspec(dllimport) 导出整个类
由于您刚刚发现的原因,您不能这样做。没有私有成员的类与有私有成员的类不是同一个类。编译器没有分配错误的大小,您正在使用两个具有相同名称的不同类。 使用类似于
pimpl
的习惯用法来隐藏班级的隐私。 (请参阅
不透明指针和快速 pimpl 惯用语)。