- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下方法
static ComponentType & getTypeFor(const type_info &t){
ComponentType * type = componentTypes[t.hash_code()];
if(type == NULL)
{
type = new ComponentType();
componentTypes[t.hash_code()] = type;
}
return *type;
};
static bitset<BITSIZE> getBit(const type_info &t){
ComponentType & type = getTypeFor(t);
return type.getBit();
}
我会这样调用它
ComponentManagerType::getBit(typeid(MyComponentClass));
// Not an instance, passing class name
现在按照 ComponentManagerType 的建议;这仅适用于组件。目前的问题是任何类型都可以传递。它不会造成任何伤害,但将为非组件对象创建一个 id 和 bitset。
问:我如何强制此方法只接受基本类型组件的对象?
我知道没有直接的方法。但我对此几乎摸不着头脑。
编辑:添加了我自己的解决方案。不确定它是否符合犹太洁食。
最佳答案
没有直接的方法; type_info
设计上是一个最小的界面。
我建议你重写 getBit
作为可调用为 getBit<MyComponentClass>()
的模板函数.然后您可以检查模板中的基本类型(例如使用 boost::is_base_of ;您甚至可以使用 std::enable_if 强制执行模板函数声明中的要求)并执行 typeid
知道基类是正确的操作。
关于type_info 的 C++ 特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11181814/
我目前正在学习运行时类型 ID 和强制转换运算符。我有一些疑问,您能帮我解答一下这个疑惑吗? 请参阅以下代码: #include #include using namespace std;
所以,我发现了这个关于 C++ 事件的非常好的教程: http://www.gamedev.net/page/resources/_/technical/game-programming/effect
我正在尝试存储一组对象(全部继承自基础 acorn::Component)。但是,在我的 AddComponent 函数中,我不断收到此错误: 错误 C2280:“type_info::type_in
我从“Inside The C++ Object Model”中读到,type_info 对象通常存储在虚拟表的第一个槽中。但是,我迭代了虚拟表中的成员: class Base { public:
根据 cplusplus.com,std::type_info::before()函数... Returns true if the type precedes the type of rhs in
我知道编译器在实现 std::type_info 函数的行为方面有很大的自由度。 我正在考虑使用它来比较对象类型,所以我想确定: std::type_info::name 必须为两种不同的类型返回两个
当使用typeid(char[10])时,可以获得char[10]的std::type_info。 现在我遇到的问题是,我需要获取 typeid(char[n]),其中 n 不是 constexpr。
我有一个 type_info 对象,它定义了属性映射中的属性类型。我想运行一些代码(例如从 cin 中读取值),该代码使用我的 type_info 对象定义的类型进行参数化。它可以是一些模板函数,即:
考虑以下方法 static ComponentType & getTypeFor(const type_info &t){ ComponentType * type = compone
有没有办法从两个 const ::std::type_info 中判断对象,让我们将它们命名为B和 D如果 D 描述的类型是从类型 B 派生的? 我问是因为我想删除我得到的对象的类型,但稍后能够检查它
为什么下面的例子: #include #include template void fun(const T& param) { std::cout << "T = " << typ
这个问题在这里已经有了答案: Is it possible to print a variable's type in standard C++? (25 个答案) 关闭 2 年前。 我用g++编译
我存储了一个指向 type_info 对象的指针。 int MyVariable = 123; const std::type_info* Datatype = &typeid(MyVariable)
我正在微优化 code for identifying object types .我假设我可以使用以下方法检查在同一模块中实例化的两个对象是否具有相同的类型: SomeCommonBase& fir
我将 C++ 与 RTTI 结合使用。我有一个类的 type_info。如果我只有 type_info,如何判断另一个类是否是第一个类的子类? #include class Foo
我有一棵树,其中每个节点基本上是这样的: struct node { std::unordered_set objects; std::map children; }; 当我遍历树以添
可以定义一个 constexpr std::type_info 上的指针任何类的对象 T .该语言是否允许在编译时比较此类指针的相等性? 例如: #include template inline
我有以下最小示例代码。我希望能够在我的 Application::HandleEvent 中确定派生类方法。 Application 类最终将包含一个 map哪些 map type_info到处理程序
有没有办法在 C++ 中使用 const std::type_info& 作为模板参数? 例如 template class A { public: A(){} const std:
我有一组多态 C++ 类,它们都由同一个模块 (Windows DLL) 实例化。现在有两个指向此类的指针并调用了 typeid: SomeCommonBase* first = ...; //val
我是一名优秀的程序员,十分优秀!