2010-06-15 57 views
3

我有一個函數,它需要一個CRuntimeClass指針列表才能建立一個視圖。如果使用已經設置的相同類的列表調用函數,我想返回而不執行任何操作。保存指針值並在下一次調用中比較它們目前正在工作,但我想驗證這是一個合法的事情,而不是剛剛發生的事情。也許我的doc-search-fu是缺乏的,但我找不到任何地方保證從給定類的RUNTIME_CLASS()宏返回的指針值在程序的生命週期中是相同的。我能找到的最接近的是docs for CObject::GetRuntimeClass()是否可以比較RUNTIME_CLASS()宏返回的指針?

每個CObject派生類都有一個CRuntimeClass結構。

這意味着指針值不應該改變,但不會完全說明它。有沒有人有更具體的東西呢?還是有更好的方法來比較CRuntimeClasses?

回答

1

以在afx.h偷看加少許調試的顯示RUNTIME_CLASS()指針返回到一個靜態成員:static CRuntimeClass class##class_name(因爲它可以在DECLARE_DYNAMIC(class_name)宏的定義中可以看出)。

由於成員是靜態的,指向它的指針在運行時不會改變。換句話說,static是你的保證。

2

沒有這樣的保證記錄,雖然它很可能。你應該使用CObject :: IsKindOf()。