[入门] 不暴露具体实现的类库写法

shawind 2007-05-18
都找了本叫什么<COM本质论>书准备啃了-_-!
原来是这样实现的,看上去非常明了。
多谢qiezi,十分感谢。
也感谢其他兄弟提供意见。
qiezi 2007-05-18
想起来了,export出去的函数加上extern(C)或extern(Window),不然名称会被加上模块名,链接可能有些问题。

export extern(C) IFoo GetFooObject();  

实现:
extern(C)
IFoo GetFooObject(){  
  return new Foo;  
} 
oldrev 2007-05-18
嗯,几乎就是COM了,呵呵。

COM DLL 一般都导出一个叫 CreateXXXXInstance() 的函数
shawind 2007-05-18
在qiezi给出这个解决方法前,我看了一个COM的文章,上面说了com的两种实现办法。一种是Create Instance的,还有一个是直接用一个接口类型指针。
我原来是想按后一个办法写的(因为不需要dll)
个人水平太低,没实现出来......
tomqyp 2007-05-18
除了shawind的办法,有没有什么办法可以让导出的类可以直接new
oldrev 2007-05-18
qiezi 的办法不要 DLL,当然用也可以
oldrev 2007-05-18
tomqyp 写道
除了shawind的办法,有没有什么办法可以让导出的类可以直接new

想想为什么C++的ctor为什么不能是虚的
tomqyp 2007-05-18
oldrev 写道

想想为什么C++的ctor为什么不能是虚的


还真是从来没有想过,是因为如果是虚的那么子类new是会有二义性吗?但这也只能说明用接口的办法不能new啊
oldrev 2007-05-18
如果你用C++,那么 Effective C++ 和 More Effective C++ 两本书是必读的
hqs7636 2011-12-05
oldrev 写道
如果你用C++,那么 Effective C++ 和 More Effective C++ 两本书是必读的


这个人叛变了可惜
Global site tag (gtag.js) - Google Analytics