C++ 全局注册的求助

在写C++的项目的时候,想做一个模块的注册。
所有的模块信息必须在Registry类中的map注册。全局只有一份map
每次新增一个新的模块 需要登记 如member.h中所示。需要提供一个ID(value中会包含模块信息)
但是实际运行过程中 在member.h注册的时候会遇到registryTable还没有创建的情况。 Regisry.cpp中 并没有去调用Regsitry的构造函数。很是疑惑。
不知道在C++中做这种静态的注册有没有好的管理方式

Registry.h

class Registry {
 public:
  static Registry *GetRegistry();
  void AddNewElement(const void *key, int value) {
    registryTable.emplace(std::pair<const void*, int>(key, value));
  }
 private:
  std::map<const void*,  int> registryTable
}

Registry.cpp

#include "Registry.h"
Registry *Registry::GetRegistry() {
  static Registry g_Registry;
  return &g_Registry;
}

member.h

#include "Registry.h"
clase RegisterMember {
RegisterMember (const void* newKey, int newVal) {
  Registry::GetRegistry()->AddNewElement(newKey, newVal);
}
}

member.cpp

#include "member.h"
static char AID = 0;
static char BID = 0;
static RegisterMember A(&AID, 0);
static RegisterMember B(&BID, 1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值