• 2909阅读
  • 1回复

[提问]提供接口的时候能否只提供一个头文件而不用提供lib库 [复制链接]

上一主题 下一主题
离线ninsun
 

只看楼主 倒序阅读 楼主  发表于: 2017-01-18
一般情况下,我们在设计C++接口的时候,并不需要提供lib库的,例如以下的最简单的接口定义:
  1. class WEBAPPSERVER_EXPORT ServiceInterface
  2. {
  3. public:
  4. virtual QString name() = 0;
  5. }
但是,当我们让这个接口继承了某个类,并且该接口并不是纯虚的时候……情况似乎就不一样了……
  1. class WEBAPPSERVER_EXPORT ServiceInterface : public QObject
  2. {
  3.   Q_OBJECT
  4. public:
  5.   virtual QString name() = 0;
  6. }

为了使用qobject_cast或Qt的元信息则必须有Q_OBJECT宏。
那么在这种情况下,如果不提供lib库并在实现该接口的工程中包含该lib,就会在编译的时候就会报错……
那么,有没有办法避免这种情况?如果继承的类是我自己写的也就罢了,但是我继承的是QObject啊……
离线firebolt

只看该作者 1楼 发表于: 2017-01-18
如果不想提供lib,那就需要提供一个与平台无关的接口,其实你可以在你的上层应用做个模板适配器,把底层接口转换成你需要的类型。
快速回复
限100 字节
 
上一个 下一个