Visual Studio 2010 C++ 编译器为类分配错误的大小

问题描述 投票:0回答:1

目前,我正在通过 dllexport 从 DLL 导出一些类,并且我正在将私有成员设置为私有,因此我为 DLL 提供的标头不包含任何私有内容。

问题是:现在编译器不知道类的大小,它认为我正在分配一个空类(1字节大小),这个信息不应该在由DLL生成的.lib中可用吗?我无法隐藏私人数据吗?

需要明确的是,DLL 标头使用 __declspec(dllexport) 和部署标头 __declspec(dllimport) 导出整个类

c++ class private sizeof
1个回答
4
投票

由于您刚刚发现的原因,您不能这样做。没有私有成员的类与有私有成员的类不是同一个类。编译器没有分配错误的大小,您正在使用两个具有相同名称的不同类。 使用类似于

pimpl

的习惯用法来隐藏班级的隐私。 (请参阅

不透明指针
快速 pimpl 惯用语)。

© www.soinside.com 2019 - 2024. All rights reserved.