我创建了一个TypeManager类,该类允许我为 给定的类类型。这是使之成为可能的方法的最简单版本:
function validarMail(email){
var caract = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
return caract.test(email)
}
我的主程序使用该类,并且还使用多个共享库。问题在于,当存在差异库时,该方法会为每个相同的类类型创建差异ID。
如何在不对每个共享库使用不同ID的情况下进行这项工作?有没有静态解决方案吗?也许我可以使用编译标志来使它起作用?
谢谢。
答案 0 :(得分:0)
创建一个共享库。它维护了从错误类型名称到索引的映射。
将此称为int64_t get_type_integer( std::type_index )
。导出它,使其成为线程安全的,等等。
别这样。
代替呼叫
template<typename T>
int64_t getTypeId() {
static int64_t type = details::get_type_integer(typeid(T));
return type;
}
现在每个都具有一种类型,它使用魔术静态变量进行访问/初始化; get type integer每个.so每个类型仅被调用一次。因此,可以安全地编写其中的代码,而不要写得很快。
使用名称而不直接使用type_index
是因为在许多系统中,两个这样的相同类型可以被认为是不同的类型,但是可以具有相同的类型名称。