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

Visual Studio 2010 C++ compiler allocating wrong size for class

本文关键字:错误 分配 Studio 2010 c++ 编译器 Visual      更新时间:2023-10-16

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

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

要清楚,DLL头文件使用__declspec(dllexport)和部署头文件__declspec(dllimport)导出整个类

你不能那样做,因为你刚刚发现的原因。没有私有成员的类与具有私有成员的类不是同一个类。编译器没有分配错误的大小,你在玩两个不同的类,有相同的名称。

使用类似pimpl的习惯用法来隐藏类的私有值。(参见不透明指针和快速粉刺习语)。