Tabel multi indeks C++ - API persistensi eos

Cuplikan kode untuk pertanyaan ini berasal dari bagian Persistance API pada dokumentasi WIKI untuk EOS. Tautan ke halaman ini ada di sini...

https://github.com/EOSIO/eos/wiki/Persistence-API

Dalam cuplikan kode berikut, sepertinya templat kelas (atau kelas templat) sedang diketik sebagai service_table_type. Kemudian sejumlah tipe khusus diteruskan dalam tanda kurung sudut templat kelas dan sepertinya tidak ada yang baru di sana selain kerumitannya (jika saya memahaminya dengan benar).

using service_table_type = multi_index<service, service_rec,
indexed_by< N(bycustomer), const_mem_fun<service_rec, account_name, 
&service_rec::get_customer>>>;

Pertanyaan saya adalah mengenai baris kode di bawah ini yang mengikuti cuplikan kode di atas. apa yang terjadi disini? sepertinya panggilan ke fungsi service_table() yang mengembalikan parameter tipe service_table_type. Dari manakah fungsi ini berasal? Jika fungsi ini berasal dari perpustakaan, bagaimana cara mengembalikan nilai tipe service_table_type yang kita buat secara sewenang-wenang?

service_table_type service_table( current_receiver(), mechanic );

bisakah Anda memberi saya contoh kode umum tentang apa yang terjadi di sini?

Terima kasih!


person kamiss    schedule 20.06.2018    source sumber


Jawaban (1)


Anda memanggil konstruktor kelas multi_index. service_table adalah nama variabel

person pure cuteness    schedule 20.06.2018
comment
Terima kasih balasannya. Untuk menguji pemahaman saya, saya menulis kelas Test yang, menurut pemahaman saya, meniru apa yang terjadi pada kode di atas. Kode saya berfungsi sebagaimana adanya tetapi ketika saya menyertakan baris yang dikomentari, itu tidak berfungsi. (di sini saya berasumsi bahwa baris yang dikomentari analog dengan: masing-masing menggunakan service_table_type = multi_index‹service, service, .... dan service_table_type service_table( current_receiver(), mekanik );. - person kamiss; 20.06.2018
comment
Maaf waktu edit saya habis sehingga saya tidak dapat menyusun pertanyaan di atas dengan benar. Berikut adalah kode yang berfungsi apa adanya. bagian yang dikomentari tidak berfungsi. apa yang tidak saya lakukan yang dilakukan contoh di atas? templat‹kelas T› tes kelas{ pribadi: T x; publik: Test‹T›(T templateVar){std::cout‹‹templateVar;} void setVar(T v) {x=v;} T getX() const {return x;} }; int main() { // menggunakan xxx = Uji‹float›; //objxxx(25.003); Uji‹float› obj(25.003); kembali 0; }` - person kamiss; 20.06.2018
comment
Apa yang Anda maksud dengan itu tidak berhasil? Itu tidak dapat dikompilasi? Periksa apakah Anda telah mengaktifkan C++11. Alternatifnya, Anda dapat mengubah using xxx = Test<float> menjadi typedef Test<float> xxx; - person pure cuteness; 20.06.2018