के बिना कक्षा पहचान मुझे सी ++ RTTI के बिना अंतर्निहित पहचान कक्षा में इंटरनेट पर कहीं भी एक सरल समाधान मिला है।आरटीटीआई
template <typename T>
class Identity {
public:
static int64_t id()
{
static int64_t dummy;
return reinterpret_cast<int64_t>(&dummy);
}
};
जब हम कुछ वर्ग आईडी की जरूरत है, हम बस का उपयोग करें:
Identity<OurClass>::id();
मैं सोच रहा हूँ, वहाँ किसी भी टकराव से कर रहे हैं? क्या यह अलग-अलग वर्गों, या एक ही कक्षा के लिए अलग-अलग आईडी के लिए एक ही आईडी वापस कर सकता है? मैंने इस कोड को विभिन्न अनुकूलन मूल्यों के साथ g ++ के साथ करने की कोशिश की है, सब कुछ ठीक लगता है।
सिद्धांत रूप में, हाँ। इस बात की कोई गारंटी नहीं है कि एक फ़ंक्शन पॉइंटर एक 'int' के समान आकार है। –
यह मेरी रुचियों के लिए प्रासंगिक है ... –
उपर्युक्त समस्या से बचने के लिए, उस स्थिर सदस्य फ़ंक्शन टेम्पलेट में स्थिर 'int' चर डालना बेहतर होगा और * उस * पर एक सूचक वापस लौटना बेहतर होगा। संकलक वैसे भी समारोह को अनुकूलित करेगा। – Electro