2012-12-16 37 views
2

假設我的項目中有兩個文件:「code.h」和「readData.cpp」。 code.h文件具有我的類接口(以及一些成員函數定義),readData.cpp文件具有我的類的一個私有成員函數的定義。爲我的C++靜態庫創建接口

想這是我的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 

OK,到目前爲止,一切順利。但這是我的問題出現的地方。我想分發此mylib.a上庫和只有允許其他用戶看到類似下面的界面:

Class MyClass { 
    double sample(); 
}; 

我怎麼能這樣做?

+0

pimpl成語是一種方式。 –

+1

相關問題:http://stackoverflow.com/q/206272/951890 –

+0

@VaughnCato好的,謝謝你的建議。假設我不在乎隱藏接口,但只想隱藏文件readData.cpp的內容。那麼,我該怎麼做?我只是將myLib.a文件與文件code.h一起分發? (我從來沒有創建過一個庫) – synaptik

回答

0

感謝Vaughn Cato的幫助,我使用PIMPL策略解決了這個問題。