Visual Studio 2010 c++编译器为类分配错误的大小
Visual Studio 2010 C++ compiler allocating wrong size for class
目前我正在通过dlexport从DLL导出一些类,并且我正在使我的私有成员私有,因此我为DLL提供的头文件不包含任何私有内容。
问题是:现在编译器不知道类的大小,它认为我分配一个空类(1字节大小),难道这些信息不应该在与DLL生成的。lib中可用吗?我不能隐藏私人数据?
要清楚,DLL头文件使用__declspec(dllexport)和部署头文件__declspec(dllimport)导出整个类
你不能那样做,因为你刚刚发现的原因。没有私有成员的类与具有私有成员的类不是同一个类。编译器没有分配错误的大小,你在玩两个不同的类,有相同的名称。
使用类似pimpl
的习惯用法来隐藏类的私有值。(参见不透明指针和快速粉刺习语)。
相关文章:
- vector.resize()中的分配错误
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 正在理解智能指针,但出现错误:未分配正在释放的指针
- 如何修复只读对象中成员的错误分配?
- 无法将错误分配给成员函数中"类型的实体"
- 分段错误分配函数结果
- 如何实现,错误分配中止而不是抛出异常
- C++代码错误分配
- 如何修复错误分配C++运行时错误
- 分段错误 - 分配类困难
- 带有数组类型表达式的错误分配
- Sprintf 缓冲区问题,错误分配给字符数组
- 而 (p=strtok(NULL, "," )) 警告:p可识别的错误分配
- 错误:分配只读位置“arr2.IntArray::operator[](1)”arr2[1]=24;
- std::映射错误分配错误
- 为什么"e.what()"打印"错误分配"?
- std::vector<const char *>的错误分配效果?
- 使用指向类的指针进行错误分配
- 错误:分配只读引用“__b”
- 向量错误分配错误 C++