NSFX手册学习(2)

第一个接口与组件

定义一个接口

我们用一个头文件:config.h来包含所有必须的头文件,如下:

// config.h
#include <nsfx/all.h>

using namespace nsfx;
NSFX的所有函数与类都在nsfx命名空间中,同时,在安装时我们已经将其植入到实例目录下了。
接下来,我们定义第一个接口IEcho。
// i-echo.h
#include "config.h"
#include <string>

class IEcho :
    virtual public IObject
{
public:
    virtual ~IEcho(void) BOOST_NOEXCEPT {}

    virtual std::string Shout(const std::string& msg) = 0;
};
IObject是IEcho的虚基类。
------------------
我们来看一下虚基类的知识:
虚基类是指:class SubClass : virtual public BaseClass 中以virtual声明的基类!!由于C++支持多重继承,所以对于一个派生类中有几个直接父类,而几个直接父类中有几个可能分别继承自某一个基类(就是父类的父类),这样在构造最终派生类时,会出现最终派生类中含有多个同一个基类的情况,就会产生二义性的问题(不知道该调用哪个基类的成员变量和函数),为解决此问题,需要使用虚基类,即只对此基类生成一块内存区域,这样最终派生类中就只会含有一个基类了
典型的需要用虚基类的情况如下:
            A
           / \
          B   C
           \ /
            D
其中D继承自BC,BC分别继承自A,所以A要分别被BC虚拟继承。
_____________________
——————————
const std::string&是一种参数类型,msg传递实参变量的地址,
 这里定义的接口被命名为IEcho,它从IObject继承而来,这里还定义了一个IEcho接口的方式函数Shout(),通过使用
宏NSFX_DEFINE_CLASS_UID(),该接口被定义了一个独一无二的ID,正如一下所声明定义的一样:
NSFX_DEFINE_CLASS_UID(IEcho, "edu.uestc.nsfx.tutorial.IEcho");
用户不必记住每一个接口的ID,用户只需要通过类型来使用接口就可以了(这句话暂时没懂起,后面再过来修正解释),NSFX再内部的调用接口ID。


参考文章:
https://www.cnblogs.com/qrlozte/p/4168807.html
http://c.biancheng.net/view/2193.html

猜你喜欢

转载自www.cnblogs.com/lx61/p/12176192.html
今日推荐