类定义作为lib的调用接口问题。

OldWaterKing 2005-11-28 04:18:43
//生成.lib的头文件:
//a.h :
class A{
public:
fn1();
protected:
fn2();
private:
int m_a1;
};

//这个类作为lib的一个接口被其他代码引用,但希望隐藏具体实现的信息,
//所以希望发布时.lib的头文件类似如下:
class A{
public:
fn1();
};

这样做可以连接通过的,但我觉得运行时会有错。运行时会有错么?如果想要达到这种目的(发布的头文件中隐藏非public函数,变量),因该怎么做? 谢谢。
ps: 不用com
...全文
162 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fiftymetre 2005-11-28
  • 打赏
  • 举报
回复
头文件和cpp分离,然后编译成lib

需要使用这个lib的地方,只要引用头文件就可以
在编译的时候把这个lib加进来就好了
oyljerry 2005-11-28
  • 打赏
  • 举报
回复
重新封装一次
jixingzhong 2005-11-28
  • 打赏
  • 举报
回复
恩, 用一个 私有类来隐藏信息,
一般情况下足够安全了 ~
iGray 2005-11-28
  • 打赏
  • 举报
回复
引出类,只有在使用能一种编译器上,才能调用。类成员不可避免name mangling。
VC里可以,用扩展DLL导出类。当然,只能在VC上用了

如果连接没有错,运行时会有什么错?错也是代码逻辑的问题了。

建议用全局函数引出接口。
1.做一个CreateClass函数,new一个类
2.类的所有成员调用,生成一个相应的全局函数,封装,由函数通过对象的指针调用实际的成员函数
3.当然,还得有一个delete的释放函数
cenlmmx 2005-11-28
  • 打赏
  • 举报
回复
那你就用另一个类来包装
class wrapper
{
private:
A a;
public:
//A public methods
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧