সি ++ এর মধ্যে এটি অন্তর্নির্মিত নেই, আপনি বৈশিষ্ট্য কার্যকারিতা নকল করতে একটি টেমপ্লেট সংজ্ঞায়িত করতে পারেন :
template <typename T>
class Property {
public:
virtual ~Property() {}
virtual T& operator= (const T& f) { return value = f; }
virtual const T& operator() () const { return value; }
virtual explicit operator const T& () const { return value; }
virtual T* operator->() { return &value; }
protected:
T value;
};
একটি সম্পত্তি সংজ্ঞায়িত করতে :
Property<float> x;
একটি কাস্টম গেটার / সেটার বাস্তবায়নের জন্য উত্তরাধিকার সূত্রে:
class : public Property<float> {
virtual float & operator = (const float &f) { return value = f; }
virtual operator float const & () const { return value; }
} y;
একটি নির্ধারণ করতে শুধুমাত্র পাঠযোগ্য সম্পত্তি :
template <typename T>
class ReadOnlyProperty {
public:
virtual ~ReadOnlyProperty() {}
virtual operator T const & () const { return value; }
protected:
T value;
};
এবং এটি ক্লাসে ব্যবহার করতেOwner
:
class Owner {
public:
class : public ReadOnlyProperty<float> { friend class Owner; } x;
Owner() { x.value = 8; }
};
এটিকে আরও সংক্ষিপ্ত করতে আপনি উপরের কয়েকটিকে ম্যাক্রোতে সংজ্ঞায়িত করতে পারেন।