In C# / .NET you can do something like this:
someThing.text = "blah"; String blah = someThing.text;
However, the above code does not actually interact with the someThing's text String directly, it uses a get and set property. Similarly, read-only properties can be used.
Is there a way to do something similar in native C++? (not C++ .NET)
WARNING: This is a tongue-in-cheek response and is terrible!!!
Yes, it's sort of possible :)
template<typename T> class Property { private: T& _value; public: Property(T& value) : _value(value) { } // eo ctor Property<T>& operator = (const T& val) { _value = val; return *this; }; // eo operator = operator const T&() const { return _value; }; // eo operator () };
Then declare your class, declaring properties for your members:
class Test { private: std::string _label; int _width; public: Test() : Label(_label) , Width(_width) { }; Property<std::string> Label; Property<int> Width; };
And call C# style!
Test a; a.Label = "blah"; a.Width = 5; std::string label = a.Label; int width = a.Width;
In .NET properties are syntactic sugar for the real get
and set
functions which are emitted behind the scenes (in fact they are more than syntactic sugar because properties are emitted in the resulting IL and could be used with Reflection). So in C++ you would need to explicitly write those functions as there's no such notion as property.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With