由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教显示object name的问题(c++)
相关主题
问一个constructor的问题 (转载)也问个template 的问题(C++)
有大侠讲讲RTTI和exception的问题么?诡异的异常处理
C#程序调用Windows C++ DLL的问题C++: exception: out-of-order execution?
A try-catch problem in C++TIJ上写错了?
heap 和 stack问题python得问题
C++ Q17: throw 2Stack Overflow怎么办?
copy constructor问题。请问C++ exception后如何清理function stack上的内存资源?
How to user Perl to handle object on client side?C++ Q03:
相关话题的讨论汇总
话题: object话题: name话题: exception话题: member话题: stack
进入Programming版参与讨论
1 (共1页)
c*****s
发帖数: 49
1
初学,应该是特别基本的问题,但找不到理想的方法.
在一个class的member function中有没有任何方法可以显示invoke这个function的
object的name?
需要这个是因为在handle exception的时候需要显示对哪个object的操作导致
exception(习题要求 Your exceptions should pass along the identity of the
stack that caused the exception)
唯一能想到的就是stack class里加个stack_name data member. Construct的时候保证
和object name一致.但感觉这个方法太不智能了.有没有更好,更常用的方法?
非常感谢!
X****r
发帖数: 3557
2
"identity of the stack" 不见得就是一定要变量名。一个对象的地址就是它的
unique identifier.

【在 c*****s 的大作中提到】
: 初学,应该是特别基本的问题,但找不到理想的方法.
: 在一个class的member function中有没有任何方法可以显示invoke这个function的
: object的name?
: 需要这个是因为在handle exception的时候需要显示对哪个object的操作导致
: exception(习题要求 Your exceptions should pass along the identity of the
: stack that caused the exception)
: 唯一能想到的就是stack class里加个stack_name data member. Construct的时候保证
: 和object name一致.但感觉这个方法太不智能了.有没有更好,更常用的方法?
: 非常感谢!

c*****s
发帖数: 49
3
Ah. Just pass "this" to pop_empty.And the name can be displayed in "catch" which is in main().
Thanks!

【在 X****r 的大作中提到】
: "identity of the stack" 不见得就是一定要变量名。一个对象的地址就是它的
: unique identifier.

s*******e
发帖数: 432
4
you can use RTTI (run-time type information) you can google to see how to
use it
c*****s
发帖数: 49
5
Thank you for your answer. However, after reading some info online, it seems
RTTI deals with the type of the object only (esp. for hiearchies of
inherited classes). I could not figure out how to use it to infer the object
name. Please let me know if I'm missing something. Thanks.

【在 s*******e 的大作中提到】
: you can use RTTI (run-time type information) you can google to see how to
: use it

t****t
发帖数: 6806
6
for one thing, a c++ object does not have to have a name. so the "identity"
must not be "name".

【在 c*****s 的大作中提到】
: 初学,应该是特别基本的问题,但找不到理想的方法.
: 在一个class的member function中有没有任何方法可以显示invoke这个function的
: object的name?
: 需要这个是因为在handle exception的时候需要显示对哪个object的操作导致
: exception(习题要求 Your exceptions should pass along the identity of the
: stack that caused the exception)
: 唯一能想到的就是stack class里加个stack_name data member. Construct的时候保证
: 和object name一致.但感觉这个方法太不智能了.有没有更好,更常用的方法?
: 非常感谢!

b******n
发帖数: 592
7
加一个data member的方法没有问题。你可以提供一些MACRO简化declaration。感觉
你需要的不是具体的class的名字,而是object的名字,用来更好的显示错误信息,所以
这样算是唯一的办法了。再有就是在catch的时候加上合适的信息也可以。

【在 c*****s 的大作中提到】
: 初学,应该是特别基本的问题,但找不到理想的方法.
: 在一个class的member function中有没有任何方法可以显示invoke这个function的
: object的name?
: 需要这个是因为在handle exception的时候需要显示对哪个object的操作导致
: exception(习题要求 Your exceptions should pass along the identity of the
: stack that caused the exception)
: 唯一能想到的就是stack class里加个stack_name data member. Construct的时候保证
: 和object name一致.但感觉这个方法太不智能了.有没有更好,更常用的方法?
: 非常感谢!

c*****s
发帖数: 49
8
Thanks all for your answers. Indeed I need to pass something else other than the object name.
blueivan, you are right, I do need a data member -- found some lecture notes
used the same method.
I later realize that even within "catch", I have no way to display the
object name even the object address has been passed by exception. Then I
realize in reality, the identifier for the object is always some attribute,
not the object name (or address). This attribute is what should be printed
out in the error msg instead of the object name in the program. Now, adding
the data member makes sense.

所以

【在 b******n 的大作中提到】
: 加一个data member的方法没有问题。你可以提供一些MACRO简化declaration。感觉
: 你需要的不是具体的class的名字,而是object的名字,用来更好的显示错误信息,所以
: 这样算是唯一的办法了。再有就是在catch的时候加上合适的信息也可以。

1 (共1页)
进入Programming版参与讨论
相关主题
C++ Q03:heap 和 stack问题
大牛给介绍一下Objective C vs C++ 的优劣吧C++ Q17: throw 2
如何智能化合并数据库中属于相关objects的各种属性到一个object下?copy constructor问题。
[python] raise another exception in exception constructHow to user Perl to handle object on client side?
问一个constructor的问题 (转载)也问个template 的问题(C++)
有大侠讲讲RTTI和exception的问题么?诡异的异常处理
C#程序调用Windows C++ DLL的问题C++: exception: out-of-order execution?
A try-catch problem in C++TIJ上写错了?
相关话题的讨论汇总
话题: object话题: name话题: exception话题: member话题: stack