问题标签 [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.
c++ - 检查 X 是否通过 typeid 从 Y 派生
我需要将指针转换为 long (SendMessage()),并且我想安全地检查另一侧的变量是否正确。所以我正在考虑做 dynamic_cast 但这不适用于非虚拟的类。然后我想到了做 typeid 但这将工作,直到我将派生的 var 作为它的基础。
有什么方法可以检查指针是否是我在运行时所期望的?有没有办法我可以使用 typeid 来查看指针是否是从特定基派生的类型?
c++ - 是否可以从 C++ 中的模板类型中获取 char* 名称
我想获取模板类型的字符串名称(const char*)。不幸的是,我无法访问 RTTI。
所以
这可能吗?我找不到方法,准备放弃。谢谢您的帮助。
c++ - typeid() 在 g++ 中返回额外的字符
上面的代码使用 g++ 在我的 ubuntu 机器上打印P3foo 。我不明白为什么要打印P3foo而不是foo。如果我更改代码
它打印3foo。
有什么想法吗?
c++ - 测试一个类是否是多态的
我们有一个子项目“commonUtils”,其中有许多在父项目中使用的通用代码片段。我看到的一件有趣的事情是:-
我相信评论并认为它是一个非常有趣的模板,尽管它没有在整个项目中使用。我只是出于好奇而尝试这样使用它...
但是这些都没有返回true。MSVC 2005 未给出警告,但 Comeau 警告 typeid 表达式无效。C++ 标准中的第 5.2.8 节没有像注释所说的那样说任何东西,即 typeid 在编译时对非多态类型进行评估,在运行时对多态类型进行评估。
1)所以我猜这个评论是误导/完全错误的,或者因为这段代码的作者是一个相当资深的 C++ 程序员,我错过了什么吗?
2)OTOH,我想知道我们是否可以使用某种技术测试一个类是否是多态的(至少具有一个虚函数)?
3) 什么时候想知道一个类是否是多态的?胡乱猜测; 通过使用获取类的起始地址dynamic_cast<void*>(T)
(dynamic_cast
仅适用于多态类)。
等待您的意见。
提前致谢,
c++ - 如何在 C++ 中输入类型
如何在 C++ 中模拟 C# typeof-command 行为?
C# 示例:
称呼:
如何使用 C++ 实现这一点?也许 QT 或 Boost 库提供了解决方案?
如果您想以从文件(.so 或 .dll)加载这些类型的对象的方式实现 .GetPlugins(...),情况会怎样?
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 和其他平台的任何信息。
c++ - 前向声明和 typeid
我想根据子类的类型检查超类A
的类型B
(在超类中使用方法A
,以便B
继承它)。
这就是我认为的诀窍(即使用前向声明):
但是,此代码无法编译。我得到的错误是:
我该如何解决这个问题?
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:
c++ - 获取变量类型
如果我理解正确, typeid 可以确定多态中的实际类型,而 typeof 不能。
它们的返回是否也有不同的用途:typeof的返回用作类型关键字,可以定义变量,而typeid的返回不能?
有什么办法既可以获取多态的实际类型,又可以使用 return 作为类型关键字来定义另一个变量?我希望从指向基类的指针中获取派生类类型,并定义派生类的变量或指向派生类的指针。就像是:
非常感谢你!
c++ - 指向 typeinfo::name() 的内存生命周期是多少?
在 C++ 中,我可以使用typeid
运算符来检索任何多态类的名称:
返回的const char*
指针指向的字符串对我的程序可用多长时间?