c++ - 在 C 中使用 C++ 对象

标签 c++ c

我正在用 C++ 编写代码。我需要支持一些基本数据类型和 BigInt 之类的东西。此类型将暴露给外界(通过头文件),其中可能还包括 c 程序。
我应该将 BigInt 之类的数据类型实现为结构还是类?
困惑是因为
1.如果我把它实现为类,由于面向对象的优势,我可以在类中完成所有处理。但我可能必须为 C 程序实现一些解决方法
2. 如果我将它实现为结构体,我不需要为 C 程序做任何特殊的事情,但我失去了模块化和易于实现。

最佳答案

基本上 C 无法访问 C++ 对象,无论是结构/类(它们在 C++ 中是相同的,只是默认可见性说明符不同)。您必须为 C++ 对象创建过程包装器(即创建、方法调用、销毁等)。

对于创建,创建一个返回不透明指针的函数(在 C++ 中,这将是对象指针)。对于方法调用,将返回的指针(从上面的创建函数)添加为(通常是第一个)参数之一。对于销毁,它与方法调用相同,但通常除了上面的指针之外不接收其他参数。

关于c++ - 在 C 中使用 C++ 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10493568/

相关文章:

c++ - "floor"是否可能由于浮点舍入错误而返回不准确的结果?

c++ - 使用以编程方式创建的 Windows 媒体播放器进行基本播放

c++ - 避免 set 创建 Comparator 对象的实际拷贝是否合法

c++ - Project Euler : Summation of primes. .. 为什么这行不通?

c - while循环在for循环之后不执行

凯撒加密程序不会产生预期的密文

c - 自定义字符设备的读取系统调用的回调函数(scull read)在使用 $cat 读取时被无限次调用

c++ - map::erase 如何知道间隔是否有效?

通过检查 C 中的魔数(Magic Number)来检查可执行文件或 shell 文件是否有效

c - 使用 strcpy 和等于运算符的字符串赋值