c++ - 为我的 C++ 静态库创建接口(interface)

标签 c++ class interface static-libraries header-files

假设我的项目中有 2 个文件:“code.h”和“readData.cpp”。 code.h 文件有我的类接口(interface)(和一些成员函数定义),readData.cpp 文件有我的类的私有(private)成员函数之一的定义。

假设这是我的 code.h 文件的内容:

Class MyClass {
public:
    MyClass() { readData() };
    double sample();

private:
    std::vector<double> data;
    void readData();
    void foo();
};

double MyClass::sample() {
    // ...
}

void MyClass::foo() {
    // ...
}

假设这是我的 readData.cpp 文件的内容:

#include "code.h"

void MyClass::readData() {
    data.push_back(1.3083);
    data.push_back(83.24);
    // ...
}

现在,在编译并生成目标文件“readData.o”之后,我使用以下代码创建了一个库:

ar rvs myLib.a readData.o

好的,到目前为止一切顺利。但这就是我的问题所在。我想分发这个 myLib.a 库并且允许其他用户看到类似以下界面的内容:

Class MyClass {
    double sample();
};

我该怎么做?

最佳答案

感谢 Vaughn Cato 的有用评论,我使用 PIMPL 策略解决了这个问题。

关于c++ - 为我的 C++ 静态库创建接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899081/

相关文章:

c# - XML 到 C# 类问题

c++ - 使用辅助类接口(interface)写入文件,在哪里打开 ofstream?

c# - IComparable 和 IEquatable 接口(interface)有什么区别?

c++ - scanf 格式输入的 cin 类比是什么?

c++ - 如何为合成数据创建迭代器?

Java静态字段的使用

java重写抽象方法的正确性

interface - 当可调用是 Clojure 函数时,从 ScheduledFutureTask 获取 nil 而不是返回值

c# - 在 C# 中包装 Visual C++

c++ - 在 C++ 中,整数数组之间可以有空元素吗?