templates - C++ construct that behaves like the __COUNTER__ macro -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 7 जवाब

    मेरे पास सी ++ का एक सेट है वर्गों और हर एक को एक अद्वितीय अनुक्रमिक आईडी को एक संकलित समय निरंतर के रूप में घोषित करना होगा। इसके लिए मैं __ COUNTER __ अंतर्निर्मित मैक्रो का उपयोग कर रहा हूं जो कि एक पूर्णांक के लिए अनुवादित होता है जो उस की हर घटना के लिए बढ़ता है। आईडी एक सख्त आदेश का पालन करने की आवश्यकता नहीं है केवल आवश्यकता यह है कि वे क्रमिक हैं और 0 से शुरू करते हैं:

      वर्ग ए {सार्वजनिक: enum {id = __COUNTER__}; }; वर्ग बी {सार्वजनिक: enum {id = __COUNTER__}; }; // आदि ...   

    मेरा प्रश्न यह है कि: क्या सी ++ का उपयोग करके समान परिणाम प्राप्त करने का एक तरीका है, जैसे टेम्पलेट्स?

    यह __ लाइन __ मैक्रो और टेम्पलेट्स का उपयोग करने का एक संभावित तरीका है:

      टेम्पलेट & LT; पूर्णांक & gt; स्ट्रक्चर इंक {enum {value = 0}; }; टेम्पलेट & lt; int इंडेक्स & gt; संरचना आईडी {enum {मान = आईडी & lt; सूचकांक - 1 & gt; :: मान + इंक & lt; अनुक्रमणिका - 1 & gt; :: मान}; }; टेम्पलेट & lt; & gt; संरचना आईडी & lt; 0 & gt; {Enum {value = 0}; }; # परिभाषित CLASS_DECLARATION (कक्षा) \ टेम्पलेट & lt; & gt; \ स्ट्रक्चर इंक & lt; __ लाइन __ & gt; \ {\ enum {value = 1}; \}; \ \ स्ट्रैट क्लास \ {\ enum {id = आईडी & lt; __ लाइन __ & gt; :: value}; \ Private:   

    उपयोग करने का उदाहरण:

      CLASS_DECLARATION (ए) // ...}; CLASS_DECLARATION (बी) // ...}; CLASS_DECLARATION (सी) // ...};   

    देखें।

Comments

Popular posts from this blog

Verilog Error: output or inout port "Q" must be connected to a structural net expression -

jasper reports - How to center align barcode using jasperreports and barcode4j -

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -