问题描述
我在 eosio 中有两个版本的响应:
v. 1.8.1
block_state::block_state( pending_block_header_state&& cur,const signed_block_ptr& b,vector<transaction_Metadata_ptr>&& trx_Metas,const std::function<void( block_timestamp_type,const flat_set<digest_type>&,const vector<digest_type>& )>& validator,bool skip_validate_signee
)
:block_header_state( std::move(cur).finish_next( *b,validator,skip_validate_signee ) ),block( b ),trxs( std::move(trx_Metas) ) <-----
{}
v. 2.0.11
block_state::block_state( pending_block_header_state&& cur,signed_block_ptr&& b,const protocol_feature_set& pfs,const signer_callback_type& signer
)
:block_header_state( inject_additional_signatures( std::move(cur),*b,pfs,signer ) ),block( std::move(b) ),_pub_keys_recovered( true ) // called by produce_block so signature recovery of trxs must have been done,_cached_trxs( std::move(trx_Metas) ) <-----
{}
它适用于第一个版本:
for (const auto &transaction : block->trxs)
{ }
但是当我想在第二个类似的调用时:
for (const auto &transaction : block->_cached_trxs)
{ }
_cached_trxs is a private member of 'eosio::chain::block_state'
我该如何解决这个问题?
解决方法
我的C++有点生疏,但看起来你可以使用pending_state对象的extract_trx_metas方法访问它。