全球服务注册和逗号运营商



有一个全局函数注册服务:

// services call this to register upon creation
extern void RegisterService(adapter::Service *s);

然后在.cpp文件中的某个地方某些服务本身:

// create the adapter and register with libecap to reach the host application
static const bool Registered = (libecap::RegisterService(new Adapter::Service), true);

为什么不简单地致电libecap :: registerservice(新的apapter :: service)进行注册?它看起来甚至陌生,因为全局变量未使用注册

因为您无法将表达式放在源文件中漂浮的空白空间中。仅声明

这是迫使在此评估表达式的常见方法,即使后来从未真正使用了所得的对象。

代码的AITHOR想要拥有一个布尔标志,该标志将说明该服务是否已经注册。他可以写作

libecap::RegisterService(new Adapter::Service);
static const bool Registered =  true;

规定注册是局部变量。

但是,如果注册不是本地变量,那么他可能不会在其他功能(或main)之外调用功能。因此,定义全局bool变量(具有外部或内部链接)的唯一方法,同时调用具有返回类型void的函数的方法是以下

static const bool Registered = (libecap::RegisterService(new Adapter::Service), true);

逗号运算符的表达式的结果是True,将以此值初始化注册。同时函数libecap :: gubisterservice(新的apapter :: service)将被调用。

作为替代方案,他可以定义一个类别的构造函数,其构造函数将包含该功能的调用,而驱动器将包含一些未注册的东西。

相关内容

  • 没有找到相关文章

最新更新