1

我正在用 C++ 编写代码。我需要支持一些基本的数据类型,比如 BigInt。这些类型将暴露给外界(通过头文件),其中可能还包括 c 程序。
我应该将 BigInt 之类的数据类型实现为结构还是类?
困惑是因为
1. 如果我将其实现为类,作为 OO 的优势,我可以在类中进行所有处理。但是我可能需要为 c 程序
2 实现一些工作。如果我将它实现为结构,我不需要为 c 程序做任何特殊的事情,但我会失去模块化和易于实现。

4

2 回答 2

4

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

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

于 2012-05-08T06:32:20.167 回答
0

如果您打算在 C 中使用它,我建议您用 C 编写它。C++ 与 C 的相处比 C 与 C++ 的相处好一百万倍。另一种选择是用 C 语言编写它,然后提供一个薄的 C++ 包装器,为其提供 OO 接口。

于 2012-05-08T06:24:21.487 回答