मेरे होमवर्क असाइनमेंट के लिए, मुझे एक लिंक की गई सूची बनाना है और यह एक टेम्पलेट क्लास होना चाहिए। असाइनमेंट सूची नामक एक टेम्पलेट क्लास और लिंक नामक एक और नेस्टेड टेम्पलेट क्लास के लिए कॉल करता है।घोंसला वाले टेम्पलेट वर्गों को कैसे डिज़ाइन किया जाए जहां नेस्टेड क्लासेस एक ही प्रकार के
विधियों को कक्षा परिभाषा के बाहर परिभाषित किया जाना चाहिए।
मैंने पहले असाइनमेंट का एक सरल संस्करण बनाया और यह काम कर रहा है, लेकिन मुझे लगता है कि मेरे डिजाइन में कोई त्रुटि है।
#include <iostream>
using namespace std;
template <class T1>
class A
{
public:
template <class T2>
class B;
T1 _a;
};
template <class T1>
template <class T2>
class A<T1>::B
{
public:
T2 _b;
};
int main()
{
A<int> a;
a._a = 5;
A<int>::B<int> b;
b._b = 10;
cout << a._a << " " << b._b << "\n";
return 0;
}
मेरा मुख्य सवाल है, यह है, के बाद से नेस्टेड वर्ग एक ही प्रकार के हो जाएगा के रूप में आप बयान A<int>::B<int> b;
से देख सकते हैं, वहाँ वर्ग बी के लिए एक तरह से स्वचालित रूप से एक के रूप में एक ही प्रकार के हो रहा है? क्या मेरा प्रश्न भी समझ में आता है? दूसरे शब्दों में, क्या मैं A<int>::B b;
कर सकता हूं और बी स्वचालित रूप से ए के समान प्रकार कर सकता हूं? ऐसी स्थिति कभी नहीं होगी जहां उदाहरण के लिए A<double>::B<int>;
होगा।
ठीक है, मैं सोच रहा था कि काम करेगा, वहाँ रहा होगा एक समस्या (इसके अलावा, जबकि मुझे पता है यह सिर्फ एक उदाहरण है, मैं वर्गों लिखने के खिलाफ सार्वजनिक डेटा के सदस्यों के साथ सलाह देंगे) तब मेरे वाक्यविन्यास के साथ क्योंकि मुझे त्रुटियां मिल रही थीं। मैं इसे फिर से कोशिश करूंगा। –