由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问一个OOP的C++问题
相关主题
[合集] 问两个C++面试题目, 请指点, 谢谢 (转载)问个虚函数的作用
A C++ runtime type casting question[合集] Effective C++上说要少用casting,但是polymorphism一定要用到c
How to check the virtual function table size?[合集] c++的dynamic_cast是如何实现的?
Remove elements from multiple vectors in C++一道 memset in C++的题
C++的一个问题[合集] 基类函数已经是virtual了,为啥子类还要virtual啊?
C++ Template Questionprivate destructor
请教 C++的一个困惑 (operator delete)Two questions on virtual destructor
Overridden function will cause function shadow in C++, but not in JavaHow to copy a polymorphic object of unknown type?
相关话题的讨论汇总
话题: vector话题: c++话题: element话题: oop
进入Programming版参与讨论
1 (共1页)
G***n
发帖数: 877
1
请教OOP的C++问题
一个class A里面有virtual function fun(),现在把A作为一个interface.
然后让B,C,D....继承A,并且overwrite这个virtual function.
现在有一个数组是vector,当然vector里面可能是B,C,D,...任意一个class。
如果要做一个循环处理这个vector
,如何知道vector里的每一个element是B,C,D中的
哪一个呢?因为要处理fun()的返回值,想知道每个element是哪个class。
s******u
发帖数: 501
2
A* p = new B();
dynamic_cast(*p); // good
dynamic_cast(*p); // throw exeption
t****t
发帖数: 6806
o***g
发帖数: 2784
4
要处理的返回值的代码也分别写在B C D里,这样它们就能自己找对了

【在 G***n 的大作中提到】
: 请教OOP的C++问题
: 一个class A里面有virtual function fun(),现在把A作为一个interface.
: 然后让B,C,D....继承A,并且overwrite这个virtual function.
: 现在有一个数组是vector,当然vector里面可能是B,C,D,...任意一个class。
: 如果要做一个循环处理这个vector
,如何知道vector里的每一个element是B,C,D中的
: 哪一个呢?因为要处理fun()的返回值,想知道每个element是哪个class。

d****i
发帖数: 4809
5
可以用标准C++的typeid().name()
http://en.cppreference.com/w/cpp/language/typeid
尽管C++不鼓励这样做:
When applied to an expression of polymorphic type, evaluation of a typeid
expression may involve runtime overhead (a virtual table lookup), otherwise
typeid expression is resolved at compile time.

【在 G***n 的大作中提到】
: 请教OOP的C++问题
: 一个class A里面有virtual function fun(),现在把A作为一个interface.
: 然后让B,C,D....继承A,并且overwrite这个virtual function.
: 现在有一个数组是vector,当然vector里面可能是B,C,D,...任意一个class。
: 如果要做一个循环处理这个vector
,如何知道vector里的每一个element是B,C,D中的
: 哪一个呢?因为要处理fun()的返回值,想知道每个element是哪个class。

N******K
发帖数: 10202
6
定义一个 vector ClassLabel; 0-A, 1-B, 2-C
然后根据Label 用static_cast

【在 G***n 的大作中提到】
: 请教OOP的C++问题
: 一个class A里面有virtual function fun(),现在把A作为一个interface.
: 然后让B,C,D....继承A,并且overwrite这个virtual function.
: 现在有一个数组是vector,当然vector里面可能是B,C,D,...任意一个class。
: 如果要做一个循环处理这个vector
,如何知道vector里的每一个element是B,C,D中的
: 哪一个呢?因为要处理fun()的返回值,想知道每个element是哪个class。

o***g
发帖数: 2784
7
我认为这个是王垠说的,自己制造问题自己解决问题
而更好的办法是,消灭问题

【在 G***n 的大作中提到】
: 请教OOP的C++问题
: 一个class A里面有virtual function fun(),现在把A作为一个interface.
: 然后让B,C,D....继承A,并且overwrite这个virtual function.
: 现在有一个数组是vector,当然vector里面可能是B,C,D,...任意一个class。
: 如果要做一个循环处理这个vector
,如何知道vector里的每一个element是B,C,D中的
: 哪一个呢?因为要处理fun()的返回值,想知道每个element是哪个class。

1 (共1页)
进入Programming版参与讨论
相关主题
How to copy a polymorphic object of unknown type?C++的一个问题
请教一个python OOP 实现的问题C++ Template Question
functional programming的两个方面请教 C++的一个困惑 (operator delete)
C++: static_cast and dynamic_castOverridden function will cause function shadow in C++, but not in Java
[合集] 问两个C++面试题目, 请指点, 谢谢 (转载)问个虚函数的作用
A C++ runtime type casting question[合集] Effective C++上说要少用casting,但是polymorphism一定要用到c
How to check the virtual function table size?[合集] c++的dynamic_cast是如何实现的?
Remove elements from multiple vectors in C++一道 memset in C++的题
相关话题的讨论汇总
话题: vector话题: c++话题: element话题: oop