рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдПрдХ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рдХрд╛рдо рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рд▓рдЪреАрд▓рд╛рдкрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдЕрд╕реНрд╡реАрдХрд░рдг: рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХрдореА рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдХрд┐рд▓ рдФрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВ - рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдПрдХ рдкрдврд╝рдиреЗ-рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЪрдХреНрд░ 2-5 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рд▓реЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВред
C ++ рдореЗрдВ C ++ рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЦреЛрдЬ рдореЗрдВ
#include <string> #include <map> #include <iostream> using namespace std; class PropertyVariant { enum Type{ Null, Integer, String }; int ivalue; string svalue; Type type; public: PropertyVariant() { type = Null; } PropertyVariant(const PropertyVariant &clone) { type = clone.type; ivalue = clone.ivalue; svalue = clone.svalue; } PropertyVariant( int val ) { type = Integer; ivalue = val; } PropertyVariant( const string &val ) { type = String; svalue = val; } PropertyVariant( const char *val ) { type = String; svalue = val; } operator int() { if( type != Integer ) throw runtime_error( "wrong type" ); return ivalue; } operator string() { if( type != String ) throw runtime_error( "wrong type" ); return svalue; } }; int main() { map<string,PropertyVariant> variant_props; variant_props["Integer"] = 100; variant_props["String"] = "crazy_dev"; string s = variant_props["String"]; int i = variant_props["Integer"]; return 0; }