【问题标题】:C++ Multi index table - eos persistance APIC++ 多索引表 - eos 持久性 API
【发布时间】:2018-11-29 01:23:08
【问题描述】:

此问题的代码 sn-p 来自 EOS 的 WIKI 文档的 Persistance API 部分。此页面的链接在这里...

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

在下面的代码 sn-p 中,看起来类模板(或模板类)被 typedef 为 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>>>;

我的问题是关于上面代码 sn-p 之后的下面一行代码。这里发生了什么?它看起来像是对函数 service_table() 的调用,该函数返回一个 service_table_type 类型的参数。这个函数是从哪里来的?如果这个函数来自一个库,它如何返回我们任意创建的 service_table_type 类型的值?

service_table_type service_table( current_receiver(), mechanic );

您能否提供一个精简的通用代码示例来说明这里发生了什么?

谢谢!

【问题讨论】:

    标签: c++ templates boost-multi-index eos


    【解决方案1】:

    您正在调用multi_index 类的构造函数。 service_table 是变量名

    【讨论】:

    • 感谢您的回复。为了测试我的理解,我编写了一个测试类,据我所知,它模仿了上面代码中发生的事情。我的代码按原样工作,但是当我包含注释掉的行时,它不起作用。 (这里我假设注释行类似于:“ using service_table_type = multi_index
    • 抱歉,我的编辑超时了,所以我无法正确构建上述问题。这是按原样工作的代码。注释掉的部分不起作用。我没有做什么上面的例子正在做什么?模板 类测试{私有:T x; public: Test(T templateVar){std::cout; //xxx obj(25.003);测试 obj(25.003);返回0; }`
    • “它不起作用”是什么意思?它不编译?检查您是否启用了 C++11。或者,您可以将 using xxx = Test&lt;float&gt; 更改为 typedef Test&lt;float&gt; xxx;
    猜你喜欢
    • 2018-08-07
    • 2011-02-03
    • 2013-04-17
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多