199得票7回答
在C++中,“typeid”与“typeof”的区别

我想知道C++中"typeid"和"typeof"的区别是什么。以下是我的了解: - "typeid"在typeinfo头文件中定义,文档中提到type_info。 - "typeof"在C的GCC扩展和C++ Boost库中定义。 此外,我创建了一个测试代码,发现"typeid"并没有返...

74得票4回答
gdb:显示某些数据的类型信息

我想要获取*this的真实类型,也就是typeid(*this).name()。 我希望在GDB中获得它,而不需要修改源代码。我尝试使用print typeid(*this),但会提示typeid未知(因为源文件没有包含它)。

60得票4回答
`typeid` 代码中奇怪的 `?:` 使用

在我正在处理的一个项目中,我看到了这段代码。 struct Base { virtual ~Base() { } }; struct ClassX { bool isHoldingDerivedObj() const { return typeid(1 ? *m_baseP...

50得票6回答
递归可变参数模板打印参数包内容

如何创建一个递归可变模板来打印参数包的内容? 我正在尝试这个,但它无法编译:template <typename First, typename ...Args> std::string type_name () { return std::string(typeid(Fi...

33得票4回答
C++11 - typeid唯一性

在C++11中,我正在使用这个。 typeid(T).name() 对于我的哈希计算,我不需要程序运行或编译之间的结果相同。我只需要它对于类型是唯一的。 我知道,它可能会对不同类型返回相同的名称,但通常是与const、指针等有关。 在我的情况下,T只能是class XY、struct...

28得票6回答
什么情况下使用'typeid'是最佳解决方案?

有很多理由不使用typeid。除了使用type_info的成员(实现定义的行为)之外,通常(或总是?)可以使用其他C++语言特性来提供类似的功能,例如:重载、虚函数等。 因此,如果不考虑依赖于实现定义的行为的用法,是否有任何真实世界的示例表明typeid是最佳解决方案?

26得票1回答
表达式副作用上的Clang警告

考虑以下源代码:#include <memory> #include <typeinfo> struct Base { virtual ~Base(); }; struct Derived : Base { }; int main() { std::uni...

23得票4回答
以编程方式获取派生类的名称

我想尝试做如下操作:class Base { public: Base() { cout << typeid(*this).name() << endl; } ... }; class Derived : public Base { .....

21得票3回答
有没有一个便携式的包装器,可以标准化C++ type_info类型名字符串格式?

type_info::name() 的输出格式是实现特定的。namespace N { struct A; } const N::A *a; typeid(a).name(); // returns e.g. "const struct N::A" but compiler-specifi...

19得票6回答
C++:使用type_info区分类型

我知道编译器在实现 std::type_info 函数的行为方面有很大的自由度。 我正在考虑使用它来比较对象类型,因此我希望确保: std::type_info::name 对于两种不同的类型必须返回两个不同的字符串。 std::type_info::before 必须表明 Type1 ...