Pada data structure kita dimungkinkan untuk menggunakan object degan data structure lain di dalam data structure. Pada dasarnya object merupakan variabel, yang berbeda hanyalah tipe datanya saja. Mendirikan member tergolong sebagai object dari struct lain, dimungkinkan selama member dari struct merupakan tempat penyimpanan.
Penjelasan Nesting Structure
Nesting Structures adalah data structure di dalam data structure, dengan cara penggunaan tipe structure yang telah dideklarasikan sebelumnya menjadi bagian dari anggota data structure lain.
Contoh penulisan
struct anak{ string nama; int umur; }; struct siswa{ anak anak; //nesting int noInduk; float niaiUjian; };
Pada penulisan di atas setiap kita mendirikan object dengan tipe structure siswa
, maka kita akan otomatis mendapatkan data structure anak
pada object ber identitas anak
.
Cara Inisialisasi Nesting Structure
Ada banyak cara inisialisasi, yaitu dengan cara non-static initialization, initializer list, dan uniform initialization. dan hal tersebut telah dijelaskan pada artikel sebelumnya, yaitu struct.
Untuk inisialisasi dengan cara non-static initialization, tidak akan berbeda seperti apa yang telah jelaskan. Jadi kali ini penulis hanya membahas inisialisasi menggunakan cara initializer list / uniform initialization saja.
Tidak jauh beda seperti apa yang telah dijelaskan, hanya saja. Untuk inisialisasi struct di dalam struct akan dibutuhkan sepasang block { }
, hal ini akan mirip seperti inisialisasi pada array multidimensi.
struct siswa budi{{"Budi ini Budi", 19}, 123, 70.5}; //uniform initialization
Cara Akses Nested Structure
untuk mengakses anggota struct kita membutuhkan tanda ”Member Access Operator ( . )” di antara nama object.
Contoh Penulisan
tono.anak.nama = "Tono Ono Loro"; tono.anak.umur = 18;
Contoh program
#include <iostream> #include <string> using namespace std; struct siswa{ struct{ //mendirikan struct juga dapat dilakukan di dalam struct string nama; int umur; }anak; int noInduk; float nilaiUjian; }; void printIt(const struct siswa &a){ cout<<"Nama \t\t = "<<a.anak.nama<<endl; cout<<"Umur \t\t = "<<a.anak.umur<<endl; cout<<"Nomer Induk \t = "<<a.noInduk<<endl; cout<<"Nilai Ujian \t = "<<a.nilaiUjian<<endl<<endl; } int main() { struct siswa budi{{"Budi ini Budi", 19}, 123, 70.5}; struct siswa tono; tono.anak.nama = "Tono Ono Loro"; tono.anak.umur=18; tono.noInduk=124; tono.nilaiUjian=7.8; printIt(budi); printIt(tono); return 0; }
Nesting structure, struct juga dimungkinkan untuk memiliki struct itu sendiri sebagai member. Kita memang tidak dimungkinkan untuk memiliki struct tersebut digunakan dalam struct itu sendiri jika didirikan sebagai member bias. Tapi hal itu akan dimungkinkan jika member tersebut merupakan pointer.
Untuk pembahasan lebih dalam mengenai struct memiliki struct itu sebagai member ber pointer akan penulis sampaikan pada artikel selanjutnya.