Auto property set get di C++ class


Welcome to the C++ world Open-mouthed smile

Kali ini saya akan berbagi tips untuk membuat property otomatis di C++ seperti halnya pada sintax di code C#. Seperti apa tipsnya? Tapi setelah yg satu ini.  hehe…Maksudnya setelah kita contoh source code simple header  dari kelas berikut:

#ifndef SAMPLECLASS_H
#define SAMPLECLASS_H

//sample header class dengan property set get
class SampleClass
{
public:
	void setNo(const int &no);
	int no() const;
private:
	int no;
}

#endif

Contoh diatas cuma ada 1 private member, tapi jika kita akan membuat kelas dengan banyak private member pasti bener capek buat set get method, belum lagi logic method yang akan digunakan nantinya. Di dalam C# dikenalkan auto property dengan set get method yg inline seperti berikut:

public int No{ set; get; }

Lalu bagaimana caranya supaya bisa buat auto property di C++ seperti code di C#?

Salah satu caranya yaitu dengan memanfaatkan preprocessor directive #define ( apa itu preprocesor? baca artikel berikut http://www.cplusplus.com/doc/tutorial/preprocessor/). Wah sepertinya kebanyakan basa-basi langsung saja ke contoh codenya Open-mouthed smile.

#define ACCESSOR(type, getter, setter)\
    private:\
        type _##getter;\
    public:\
    inline void setter(const type& value)\
    {\
        _##getter = value;\
    }\
    \
    inline const type getter() const\
    {\
        return _##getter;\
    }\

Proses pembuatan set get method disingkat jadi fungsi ACCESSOR. Untuk penggunaannya sebagai berikut:

#ifndef SAMPLECLASS_H
#define SAMPLECLASS_H

//sample header class dengan auto property

#define ACCESSOR(type, getter, setter)\
    private:\
        type _##getter;\
    public:\
    inline void setter(const type& value)\
    {\
        _##getter = value;\
    }\
    \
    inline const type getter() const\
    {\
        return _##getter;\
    }\

class SampleClass
{
	ACCESSOR(int, no, setNo)
public:
private:
}

#endif

Mudah bukan, jadi tinggal ngetik ACCESSOR diikuti tipe data member kelas kemudian nama method getter  no dan nama method setter setNo serta tanpa diikuti tanda semicolon ;

Semoga bermanfaat. Smile

2 thoughts on “Auto property set get di C++ class

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s