वापस नहीं मैं निर्माता है, जो काम नहीं कर रहा जैसा कि मैंने उम्मीद थी के साथ एक समस्या है।निर्माता प्रयोग करने योग्य वस्तु
अगर मैं उस तरह मेरी कक्षा प्रारंभ करने का प्रयास करें, यह काम करेंगे और मैं एक प्रयोग करने योग्य वस्तु मिलती है:
vector<float> v;
MyClass<2> a(v);
हालांकि, अगर मैं नीचे की तरह एक वर्ग (जो बराबर होना चाहिए) बनाने की कोशिश परिणाम काफी अप्रत्याशित हैं। कार्यक्रम संकलित या चलाने के दौरान कोई त्रुटि संदेश/चेतावनी नहीं है। लेकिन यदि आप इस चर का उपयोग कहीं और करने की कोशिश करते हैं और इसकी विधियों को कॉल करते हैं (उदाहरण के लिए a.do कुछ()), यह क्रैश हो जाएगा।
मैं मुझे सूचित करने के लिए अगर यह प्रयोग किया जाता है निर्माता के अंदर कुछ कोड डाल दिया। यह पता चला कि इस मामले में निर्माता के अंदर कोई कोड वास्तव में निष्पादित नहीं किया गया था।
MyClass<2> a(vector<float>());
तो मुझे आश्चर्य है कि यह क्यों हो रहा है? क्या दूसरी घोषणा अवैध है?
संपादित करें: मैं वर्ग के कुछ कोड
template <int x>
class MyClass {
public:
vector<float> v;
MyClass<x>(vector<float> v1) {
v = v1;
}
};
क्लैस एस के एक ही प्रकार के सार्वजनिक चर है। तो यह सिर्फ चर के लिए तर्क असाइन करेगा। – dominos
MyClass के कुछ कोड पोस्ट करें! – Nawaz
मैंने कक्षा के कुछ कोड पोस्ट किए। यह एक संदर्भ या सूचक नहीं है, सिर्फ एक चर है। – dominos