ตารางหลายดัชนี C ++ - API การคงอยู่ของ eos

ข้อมูลโค้ดสำหรับคำถามนี้มาจากส่วน Persistance API ของเอกสาร WIKI สำหรับ EOS ลิงค์เพจนี้อยู่ที่นี่ครับ...

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

ในข้อมูลโค้ดต่อไปนี้ ดูเหมือนว่าเทมเพลตคลาส (หรือคลาสเทมเพลต) กำลังถูกพิมพ์เป็น service_table_type จากนั้นประเภทที่กำหนดเองทั้งหมดจะถูกส่งผ่านภายในวงเล็บเหลี่ยมของเทมเพลตคลาส และดูเหมือนว่าจะไม่มีอะไรใหม่นอกจากความซับซ้อน (ถ้าฉันเข้าใจถูกต้อง)

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

คำถามของฉันเกี่ยวกับบรรทัดโค้ดด้านล่างที่ตามหลังข้อมูลโค้ดด้านบน เกิดขึ้นที่นี่คืออะไร? ดูเหมือนว่าการเรียกใช้ฟังก์ชัน service_table() ซึ่งส่งคืนพารามิเตอร์ประเภท service_table_type ฟังก์ชั่นนี้มาจากไหน? หากฟังก์ชันนี้มาจากไลบรารี มันจะคืนค่าประเภท service_table_type ที่เราสร้างขึ้นเองโดยพลการอย่างไร

service_table_type service_table( current_receiver(), mechanic );

คุณช่วยยกตัวอย่างโค้ดทั่วไปแบบแยกส่วนของสิ่งที่เกิดขึ้นที่นี่ให้ฉันได้ไหม

ขอบคุณกรุณา!


person kamiss    schedule 20.06.2018    source แหล่งที่มา


คำตอบ (1)


คุณกำลังเรียกตัวสร้างของคลาส multi_index service_table คือชื่อตัวแปร

person pure cuteness    schedule 20.06.2018
comment
ขอบคุณสำหรับการตอบกลับ. เพื่อทดสอบความเข้าใจของฉัน ฉันจึงเขียนคลาสทดสอบซึ่งตามความเข้าใจของฉัน เป็นการเลียนแบบสิ่งที่เกิดขึ้นในโค้ดด้านบน รหัสของฉันทำงานเหมือนเดิม แต่เมื่อฉันรวมบรรทัดที่ใส่ความคิดเห็นไว้ มันก็ไม่ทำงาน ( ที่นี่ ฉันสมมติว่าบรรทัดที่แสดงความคิดเห็นนั้นคล้ายคลึงกับ: การใช้ service_table_type = multi_index‹service, service, .... และ service_table_type service_table( current_receiver(), mechanic ); ตามลำดับ - person kamiss; 20.06.2018
comment
ขออภัย การแก้ไขของฉันหมดเวลา ดังนั้นฉันจึงไม่สามารถจัดโครงสร้างคำถามข้างต้นได้อย่างเหมาะสม นี่คือรหัสที่ทำงานตามที่เป็นอยู่ ส่วนที่แสดงความคิดเห็นไม่ทำงาน ฉันไม่ได้ทำอะไรที่ตัวอย่างข้างต้นกำลังทำอยู่ เทมเพลต‹คลาส T› การทดสอบคลาส { ส่วนตัว: T x; สาธารณะ: Test‹T›(T templateVar){std::cout‹templateVar;} โมฆะ setVar(T v) {x=v;} T getX() const {return x;} }; int main() { // ใช้ xxx = ทดสอบ‹float›; //xxx obj(25.003); ทดสอบ‹ลอย› obj(25.003); กลับ 0; }` - person kamiss; 20.06.2018
comment
สิ่งที่คุณหมายถึงโดยมันไม่ได้ผล? มันไม่คอมไพล์เหรอ? ตรวจสอบว่าคุณเปิดใช้งาน C++11 แล้ว หรือคุณสามารถเปลี่ยน using xxx = Test<float> เป็น typedef Test<float> xxx; - person pure cuteness; 20.06.2018