我對宏有疑問。我怎麼能通過宏模板類投射到普通類。例如:如何將模板類ptr轉換爲C++中的普通類ptr
#define RUNTIME_CLASS(class_name) ((CRuntimeClass*)(&class##class_name))
template<typename T> A {};
if (RUNTIME_CLASS(A));
我知道這段代碼不會編譯,因爲它不會看到模板位。但我不明白實際的宏。它的返回看起來像(CRuntimeClass*)(&classA)
爲什麼##
concatenate使class + A?以及預處理器如何理解這種符號?
##是預處理器的一個有用的功能。它允許通過串聯創建令牌。 – 2009-09-30 10:46:30
我不明白你想要做什麼。 這個班級是否是模板有什麼不同? 它也看起來像你想要*類型*(A)並將其轉換爲指針。你不能。類型不是值。你是否想將'A *'類型的*對象*轉換爲'CRuntimeClass *'?你怎麼知道把它轉換成'CRuntimeClass *'是安全的? 請解釋你正在嘗試解決什麼問題。那麼我們可以告訴你,如果這是可能的,你應該怎麼做。 – jalf 2009-09-30 11:05:46