标题:提供接口的时候能否只提供一个头文件而不用提供lib库
作者:ninsun
日期:2017-01-18 11:05
内容:
一般情况下,我们在设计C++接口的时候,并不需要提供lib库的,例如以下的最简单的接口定义:
class WEBAPPSERVER_EXPORT ServiceInterface
{
public:
virtual QString name() = 0;
}但是,当我们让这个接口继承了某个类,并且该接口并不是纯虚的时候……情况似乎就不一样了……
class WEBAPPSERVER_EXPORT ServiceInterface : public QObject
{
Q_OBJECT
public:
virtual QString name() = 0;
}
为了使用qobject_cast或Qt的元信息则必须有Q_OBJECT宏。
那么在这种情况下,如果不提供lib库并在实现该接口的工程中包含该lib,就会在编译的时候就会报错……
那么,有没有办法避免这种情况?如果继承的类是我自己写的也就罢了,但是我继承的是QObject啊……
#1 [firebolt 01-18 18:19]
如果不想提供lib,那就需要提供一个与平台无关的接口,其实你可以在你的上层应用做个模板适配器,把底层接口转换成你需要的类型。