निम्नलिखित कोड में मैंने एक टेम्प्लेट क्लास बनाया है, इसकी शुरुआत मुख्य फ़ंक्शन में हुई है और मैं char*
असाइन करने का प्रयास कर रहा हूं जैसा कि आप नीचे देख सकते हैं लेकिन यह काम नहीं कर रहा है। मुझे लगता है कि समस्या असाइन ऑपरेटर फ़ंक्शन में है जिसे मैंने प्रॉक्सी क्लास में परिभाषित किया है, लेकिन मैं इसका पता नहीं लगा सकता
#include <iostream>
using namespace std;
template <class T>
class Vector {
public:
T *p;
Vector(int size) {
p = new T[size];
}
class Proxy {
Vector &a;
int i;
public:
Proxy(Vector &a, int i) : a(a), i(i) {
}
void operator=(const T x) {
a.p[i] = x;
}
};
Proxy operator[](int i) {
return Proxy(*this, i);
}
};
int main() {
Vector<char *> sv1(2);
sv1[0] = "John";
sv1[1] = "Doe";
}
मुझे निम्न त्रुटि मिल रही है;
मैंने पहले से ही असाइनमेंट ऑपरेटर फ़ंक्शन में const
पर पैरामीटर सेट करने का प्रयास किया है, मैंने T
पर स्पष्ट रूप से टाइपकास्टिंग करने का भी प्रयास किया है, कुछ भी काम नहीं किया है
1 उत्तर
आपके पास कोड लिखने में एक ही त्रुटि होगी:
चार * जो कुछ भी = "कुछ";
कम से कम स्ट्रिंग के लिए यह कोड बिल्कुल गलत है:
void operator=(const T x)
{
a.p[i] = x;
}
चरण 1: बफर आवंटित करें; चरण 2: स्ट्रिंग को आवंटित बफर में कॉपी करें।
आपका कोड आदिम जैसे char, int, आदि के लिए ठीक है। निम्नलिखित कोड काम करना चाहिए:
int main() {
Vector<char> sv1(2);
sv1[0] = 'J';
sv1[1] = 'D';
}
संबंधित सवाल
नए सवाल
c++
C ++ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा है। यह मूल रूप से C के विस्तार के रूप में डिज़ाइन किया गया था और इसमें एक समान सिंटैक्स है, लेकिन यह अब पूरी तरह से अलग भाषा है। C ++ कंपाइलर के साथ संकलित कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें। विशिष्ट मानक संशोधन [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] या [C ++ 23], आदि से संबंधित प्रश्नों के लिए संस्करण-विशिष्ट टैग का उपयोग करें। ।