क्या मैं इस काम करने के लिए कर सकते हैं:स्वत: संदर्भ खाका
template<class C, class V, Test V::*>
class Test {
};
यह मेरे संकलक त्रुटि देता है:
unknown type name 'Test'
यह अब के लिए एक स्वयं को संदर्भित टेम्पलेट है, जो नहीं करता है संभव प्रतीत नहीं होता है। इसे काम करने के लिए संभवतः क्या किया जा सकता है?
संपादित करें:
यहां मुझे इसकी आवश्यकता होगी। मैं कम से कम न्यूनतम कोडिंग प्रयास के साथ एक द्वि-दिशात्मक (सोच माता-पिता) संबंध स्कीमा को कार्यान्वित करना चाहता हूं।
template <class O, class T, Reference<T, O, Reference O::*> T::* opposite>
class Reference
{
T **data;
int count;
public:
Reference(): data(new T*[N]), count(0) {}
~Reference() {delete[] data;}
Reference &add(T *t) {
handleOtherSide();
return link(t);
}
// a lot of stuff to implement this
};
यह संग्रह वर्ग है। यह इस प्रकार से इस्तेमाल किया जाएगा है:
class Partner
{
public:
Reference<Partner, Address, &Address::partner> addresses;
};
class Address
{
public:
Reference<Address, Partner, &Partner::addresses> partner;
};
मेरा लक्ष्य सब कुछ संदर्भ ताकि साथी और पता (वर्तमान में मैं आपूर्ति की तरह कक्षाओं के लिए निर्माताओं प्रदान करने के लिए कोई जरूरत नहीं है, टेम्पलेट तर्क के रूप में आपूर्ति की जा काम करने के लिए आवश्यक है एक निर्माता के तर्क के रूप में विपरीत सदस्य सूचक लेकिन इसने मुझे प्रतिभागी वर्गों के लिए स्पष्ट रचनाकारों की आवश्यकता है)। मुझे संदर्भ वर्ग में "मालिक" सूचक को पास करने या गणना करने की भी आवश्यकता होगी। मैंने इस समस्या को यहां छोड़ दिया क्योंकि मैं आत्म-संदर्भ टेम्पलेट पहलू पर ध्यान केंद्रित करना चाहता हूं।
इस बारे में सोचने का सबसे आसान तरीका boost :: bimap है। लेकिन बिमप के साथ समस्या यह है कि मैं संलग्न बिमप नहीं चाहता बल्कि सिर्फ बाएं और दाएं हिस्से को चाहता हूं। बिमाप भी व्यवहार्य नहीं है क्योंकि इससे एक विशिष्ट रिश्ते के सभी संगठनों का प्रबंधन करने वाला एक ही बिमाप होता है। यह संभवत: उस पर संचालन को धीमा करने वाली बड़ी संख्या में ऑब्जेक्ट्स रखेगा।
इसके लिए क्या है? आत्म-संदर्भ से इसे किसी अन्य तरीके से लागू करना शायद अधिक आसान है। – Jon
मुझे अपनी 666 प्रतिष्ठा गिनती से ओपी प्राप्त करने के लिए इस प्रश्न को ऊपर उठाना पड़ा। –
यदि आप मुझसे पूछने में कोई फर्क नहीं पड़ता है तो आप इस तरह के रिकर्सिव टेम्पलेट के साथ क्या लक्ष्य प्राप्त करने का प्रयास कर रहे हैं? – dasblinkenlight