Dependencies:
EOSIO.CDT (Contract Development Toolkit) Version : 1.3.1
My code:
#include <eosiolib/eosio.hpp>
#include <eosiolib/print.hpp>
using namespace eosio;
CONTRACT addressbook : public eosio::contract {
public:
using contract::contract;
addressbook(name self): contract(self) {}
[[eosio::action]]
void upsert(name user, std::string first_name, std::string
last_name, std::string street, std::string city, std::string state)
{
require_auth( user );
address_index addresses(_self, _self);
auto iterator = addresses.find( user );
if( iterator == addresses.end() )
{
addresses.emplace(user, [&]( auto& row ) {
row.key = user;
row.first_name = first_name;
row.last_name = last_name;
row.street = street;
row.city = city;
row.state = state;
});
}
else
{
std::string changes;
addresses.modify(iterator, user, [&]( auto& row ) {
row.key = user;
row.first_name = first_name;
row.last_name = last_name;
row.street = street;
row.city = city;
row.state = state;
});
}
}
[[eosio::action]]
void erase(name user){
// require_auth(user);
address_index addresses(_self, _self);
auto iterator = addresses.find( user );
eosio_assert(iterator != addresses.end(), "Record does not
exist");
addresses.erase(iterator);
}
private:
struct [[eosio::table]] person {
name key;
std::string first_name;
std::string last_name;
std::string street;
std::string city;
std::string state;
uint64_t primary_key() const { return key; }
};
typedef eosio::multi_index<"people"_n, person> address_index;
};
EOSIO_ABI( addressbook, (upsert)(erase) )
Error message:
./addressbook.cpp:12:30: error: no matching constructor for
initialization of 'eosio::contract'
addressbook(name self) : contract(self) {}