由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - A C++ runtime type casting question
相关主题
python不支持多态国内的编程论坛很不自由
不如各位高手挑个专题讲讲C++11吧c++ template跟RTTI扯得上吗?
c++里如何判断是哪种object?有段c++代码看不懂
pointer to class, which class?BigEndian和LittleEndian的设计
C++的很多library到底是趋于集中,还是各个公司独自开发,各立山头能否通过父类指针来复制子类对象?
C++问题: 指针变量是哪里产生的?c vs c++
this和&*this的区别[合集] Google C++ Coding Standard
C 里面有办法永久改变一个指针的属性吗?数组问题
相关话题的讨论汇总
话题: typeid话题: c++话题: runtime话题: casting话题: 指针
进入Programming版参与讨论
1 (共1页)
r****r
发帖数: 1
1
如果一个void *指针指向一个T类的实例, 怎样把此void *指针转换成T*指针如果T的
信息只能动态获取(用typeid operator)?
x*****h
发帖数: 38
2
dynamic_cast ptr ?? not sure
N*********y
发帖数: 105
3
Don't know what he means the info of T is dynamic.

【在 x*****h 的大作中提到】
: dynamic_cast ptr ?? not sure
s*******d
发帖数: 59
4
如果T是有限的几种类型,那就
if (typeid(p) == typeid(T*))
{
T* pt = p;
...
}
s*******d
发帖数: 59
5
抄一段
http://blog.vckbase.com/bruceteen/archive/2004/09/13/811.aspx
问:在c++里怎么能知道一个变量的具体类型,如:c#里的typeof.还有我怎么知道一个
变量的类型是某个类型的子类,也就是实现关键字IS
答:
1。运行时获知变量类型名称,可以使用 typeid(变量).name,需要注意不是所有编译
器都输出"int"、"float"等之类的名称,对于这类的编译器可以这样使用:float f =
1.1f; if( typeid(f) == typeid(0.0f) ) ……
2。对于多态类实例,想得到实际的类名称,需要使用到RTTI,这需要在编译的时候加
上参数"/GR"。
3。对于普通变量,既然是自己写的,那当然也就应该知道它的类型,其实用不着运行
时获知;对于多态类实例,既然需要运行时获知实际类型,那么就说明这里不具有多态
性,既然没有多态性就不应该抽象它,这属于设计错误,总之,我认为RTTI是多余的。
4。对于多态类实例,使用 typeid(value) == typeid(value)来判断,不如使用
dyn
1 (共1页)
进入Programming版参与讨论
相关主题
数组问题C++的很多library到底是趋于集中,还是各个公司独自开发,各立山头
C++0xC++问题: 指针变量是哪里产生的?
说几个backend从C++导向Java的知名公司吧this和&*this的区别
C++学到什么程度能找到初级工作C 里面有办法永久改变一个指针的属性吗?
python不支持多态国内的编程论坛很不自由
不如各位高手挑个专题讲讲C++11吧c++ template跟RTTI扯得上吗?
c++里如何判断是哪种object?有段c++代码看不懂
pointer to class, which class?BigEndian和LittleEndian的设计
相关话题的讨论汇总
话题: typeid话题: c++话题: runtime话题: casting话题: 指针