问题标签 [typeid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
1242 浏览

c++ - 检查 X 是否通过 typeid 从 Y 派生

我需要将指针转换为 long (SendMessage()),并且我想安全地检查另一侧的变量是否正确。所以我正在考虑做 dynamic_cast 但这不适用于非虚拟的类。然后我想到了做 typeid 但这将工作,直到我将派生的 var 作为它的基础。

有什么方法可以检查指针是否是我在运行时所期望的?有没有办法我可以使用 typeid 来查看指针是否是从特定基派生的类型?

0 投票
7 回答
8517 浏览

c++ - 是否可以从 C++ 中的模板类型中获取 char* 名称

我想获取模板类型的字符串名称(const char*)。不幸的是,我无法访问 RTTI。

所以

这可能吗?我找不到方法,准备放弃。谢谢您的帮助。

0 投票
3 回答
11972 浏览

c++ - typeid() 在 g++ 中返回额外的字符

上面的代码使用 g++ 在我的 ubuntu 机器上打印P3foo 。我不明白为什么要打印P3foo而不是foo。如果我更改代码

它打印3foo

有什么想法吗?

0 投票
5 回答
4436 浏览

c++ - 测试一个类是否是多态的

我们有一个子项目“commonUtils”,其中有许多在父项目中使用的通用代码片段。我看到的一件有趣的事情是:-

我相信评论并认为它是一个非常有趣的模板,尽管它没有在整个项目中使用。我只是出于好奇而尝试这样使用它...

但是这些都没有返回true。MSVC 2005 未给出警告,但 Comeau 警告 typeid 表达式无效。C++ 标准中的第 5.2.8 节没有像注释所说的那样说任何东西,即 typeid 在编译时对非多态类型进行评估,在运行时对多态类型进行评估。

1)所以我猜这个评论是误导/完全错误的,或者因为这段代码的作者是一个相当资深的 C++ 程序员,我错过了什么吗?

2)OTOH,我想知道我们是否可以使用某种技术测试一个类是否是多态的(至少具有一个虚函数)?

3) 什么时候想知道一个类是否是多态的?胡乱猜测; 通过使用获取类的起始地址dynamic_cast<void*>(T)dynamic_cast仅适用于多态类)。

等待您的意见。

提前致谢,

0 投票
8 回答
36644 浏览

c++ - 如何在 C++ 中输入类型

如何在 C++ 中模拟 C# typeof-command 行为?

C# 示例:

称呼:

如何使用 C++ 实现这一点?也许 QT 或 Boost 库提供了解决方案?

如果您想以从文件(.so 或 .dll)加载这些类型的对象的方式实现 .GetPlugins(...),情况会怎样?

0 投票
2 回答
3338 浏览

c++ - typeid 什么时候可以为同一类型返回不同的 type_info 实例?

Andrei Alexandrescu在Modern C++ Design中写道:

返回的对象typeid具有静态存储,因此您不必担心生命周期问题。

安德烈继续说:

该标准不保证每次调用typeid(int) 都会返回对同一 type_info对象的引用。

尽管标准不保证这一点,但在 GCC 和 Visual Studio 等常见编译器中是如何实现的?

假设typeid不泄漏(并且每次调用都返回一个新实例),它是每个应用程序、每个翻译单元、每个 dll/so 的一个“表”,还是完全不同的东西?

有时间&typeid(T) != &typeid(T)吗?

我主要对 Windows 的编译器感兴趣,但也感谢 Linux 和其他平台的任何信息。

0 投票
6 回答
1155 浏览

c++ - 前向声明和 typeid

我想根据子类的类型检查超类A的类型B(在超类中使用方法A,以便B继承它)。

这就是我认为的诀窍(即使用前向声明):

但是,此代码无法编译。我得到的错误是:

我该如何解决这个问题?

0 投票
6 回答
427790 浏览

c++ - 'typeid' versus 'typeof' in C++

I am wondering what the difference is between typeid and typeof in C++. Here's what I know:

  • typeid is mentioned in the documentation for type_info which is defined in the C++ header file typeinfo.

  • typeof is defined in the GCC extension for C and in the C++ Boost library.

Also, here is test code test that I've created where I've discovered that typeid does not return what I expected. Why?

main.cpp

output:

0 投票
2 回答
6942 浏览

c++ - 获取变量类型

如果我理解正确, typeid 可以确定多态中的实际类型,而 typeof 不能。

它们的返回是否也有不同的用途:typeof的返回用作类型关键字,可以定义变量,而typeid的返回不能?

有什么办法既可以获取多态的实际类型,又可以使用 return 作为类型关键字来定义另一个变量?我希望从指向基类的指针中获取派生类类型,并定义派生类的变量或指向派生类的指针。就像是:

非常感谢你!

0 投票
2 回答
364 浏览

c++ - 指向 typeinfo::name() 的内存生命周期是多少?

在 C++ 中,我可以使用typeid运算符来检索任何多态类的名称:

返回的const char*指针指向的字符串对我的程序可用多长时间?