मैं कुछ डी में निर्माताओं की अस्पष्टता से निपटने के लिए कैसेअस्पष्ट Struct कंस्ट्रक्टर्स डी
struct mydta {
int a = 2;
int b = 3;
this(int c) {
a = c/2;
b = c * 2;
}
this(float c) {
a = cast(int) c/2;
b = cast(int) c * 2;
}
static mydta afvec = mydta(4.3);
static mydta aivec = mydta(5);
}
afvec
डेटा को महत्व देता है 2 और 8aivec
डेटा है है समझने में परेशानी हो रही में मान 5 और 3.
इसका मतलब है कि afvec
this(float c)
को वाक्यविन्यास से अपेक्षित कहा जाता है।
हालांकि aivec
ने aivec.a = 5
के समान असाइनमेंट किया है।
मैंने यह पता लगाने के लिए इस पर विस्तार किया है कि उपरोक्त में निम्न कानूनी है: aivec = mydta(5, 4);
aivec
क्रमशः 5 और 4 मान देता है।
कोई भी विचार इस अंतर्निहित प्रारंभिकरण को कैसे बाईपास करना है ताकि मैं अपने कन्स्ट्रक्टर तक पहुंच सकूं: this(int c)
?
एक फ्लोट भी 5 हो सकता है, इसलिए यह नहीं जानता कि किस कन्स्ट्रक्टर का उपयोग करना है। उनमें से एक को कास्ट जोड़ने का प्रयास करें। – Kevin
यह समस्या नहीं है, समस्या यह है कि यदि मैं एक int का उपयोग करता हूं, तो यह 'इस (int c)' कन्स्ट्रक्टर के बजाय कुछ अंतर्निहित प्रारंभिक कॉल करता है जिसे मैं कॉल करना चाहता हूं। – dcousens