मैं असाइनमेंट ऑपरेटर के कई भार के को परिभाषित कर रहा हूँ इस प्रकार है:बूलियन और स्ट्रिंग Overloads
Foo.h
class Foo
{
private:
bool my_bool;
int my_int;
std::string my_string;
public:
Foo& operator= (bool value);
Foo& operator= (int value);
Foo& operator= (const std::string& value);
};
Foo.cpp
// Assignment Operators.
Foo& Foo::operator= (bool value) {my_bool = value; return *this;}
Foo& Foo::operator= (int value) {my_int = value; return *this;}
Foo& Foo::operator= (const std::string& value) {my_string = value; return *this;}
और यहां मेरा मुख्य.cpp है (SURPRISE
चिह्नित टिप्पणी देखें):
Foo boolFoo;
Foo intFoo;
Foo stringFoo;
// Reassign values via appropriate assignment operator.
boolFoo = true; // works...assigned as bool
intFoo = 42; // works...assigned as int
stringFoo = "i_am_a_string"; // SURPRISE...assigned as bool, not string
std::string s = "i_am_a_string";
stringFoo = s; // works...assigned as string
// works...but awkward
stringFoo = static_cast<std::string>("i_am_a_string");
प्रश्न: क्या कोई मुझे बता सकता है कि एक बुलियन संदर्भ में एक अज्ञात स्ट्रिंग अक्षर का मूल्यांकन क्यों किया जा रहा है?
@Mooing बतख: क्यों रचनाकारों को हटा दें? मैंने उन्हें जानबूझकर संकेत दिया कि एक परिवर्तक *** कन्स्ट्रक्टर के माध्यम से *** प्रारंभ किया जा सकता है, और उसके बाद *** असाइनमेंट ऑपरेटर के माध्यम से *** पुन: असाइन किया गया। (जैसा कि मैंने अन्य एसओ पोस्ट में देखा है, कभी-कभी आपको *** दोनों *** की आवश्यकता होती है।) – DavidRR
मैंने कोड को छंटनी की है [अच्छे प्रश्नों में एक छोटा आत्म निहित उदाहरण है] (http://sscce.org/) और [आपका कोड काफी छोटा और सरल हो सकता है और अभी भी समस्या को पुन: उत्पन्न कर सकता है] (http://ideone.com/W2nemc)। मैंने पहली बार आपके अधिकांश प्रश्नों को नहीं पढ़ा, क्योंकि इसमें _far_ बहुत अधिक कोड था, और मैंने अनुमान लगाया (सही ढंग से) कि इसमें से अधिकांश आपके प्रश्न से संबंधित नहीं थे। –
@ म्यूइंग डक: हाँ, मैं सिद्धांत में बहुत अधिक सहमत हूं और मेरे उदाहरण में रचनाकार जोड़ते समय इस पर विचार किया। लेकिन मैं यहां आपके फैसले को रोक दूंगा। हालांकि, मेरी आशा यह है कि मेरी टिप्पणी में आने वाले किसी भी व्यक्ति को संबंधित रचनाकारों पर भी विचार करना होगा। – DavidRR