CDT  v4.2.0
инструменты разработчика

◆ get_index() [1/2]

template<name::raw TableName, typename T , typename... Indices>
template<name::raw IndexName>
auto eosio::multi_index< TableName, T, Indices >::get_index ( )
inline

Возвращает вторичный индекс нужного типа.

Параметры шаблона
IndexName— идентификатор нужного вторичного индекса
Возвращает
Индекс соответствующего типа: 64-битный беззнаковый целочисленный ключ (idx64), 128-битный беззнаковый целочисленный ключ (idx128), 128-битный ключ фиксированной длины в лексикографическом порядке (idx128), 256-битный ключ фиксированной длины (idx256), ключ с плавающей точкой, ключ double, ключ long double (четверная точность)

Пример:

#include <eosiolib/eosio.hpp>
using namespace eosio;
using namespace std;
class addressbook: contract {
struct address {
uint64_t account_name;
string first_name;
string last_name;
string street;
string city;
string state;
uint32_t zip = 0;
uint64_t primary_key() const { return account_name; }
uint64_t by_zip() const { return zip; }
};
public:
addressbook(name receiver, name code, datastream<const char*> ds):contract(receiver, code, ds) {}
typedef eosio::multi_index< name("address"), address, indexed_by< name("zip"), const_mem_fun<address, uint64_t, &address::by_zip> > address_index;
void myaction() {
// create reference to address_index - see emplace example below
// add dan account to table - see emplace example below
uint32_t zipnumb = 93446;
auto zip_index = addresses.get_index<name("zip")>();
auto itr = zip_index.find(zipnumb);
eosio::check(itr->account_name == name("dan"), "Lock arf, Incorrect Record ");
}
}
EOSIO_DISPATCH( addressbook, (myaction) )

См. определение в файле multi_index.hpp строка 1427