2020-10-13

类名冒号后面的是用来定义类的继承
class 派生类名 : 继承方式 基类名
{
派生类的成员
};
继承方式:public、private和protected,默认处理是public。

双冒号(::)用法

(1)表示“域操作符”
例:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时,
就要写成void A::f(),表示这个f()函数是类A的成员函数。

(2)直接用在全局函数前,表示是全局函数
例:在VC里,你可以在调用API 函数里,在API函数名前加::

(3)表示引用成员函数及变量,作用域成员运算符

例:System::Math::Sqrt() 相当于System.Math.Sqrt()

=========================================================================

include <eosiolib/eosio.hpp>

class todo_contract : public eosio::contract {
public:
todo_contract(account_name self):eosio::contract(self){}
// @abi action
void create(account_name author, const uint64_t id, const std::string& desc) {
require_auth(author);
todo_table todos(_self,author);
todos.emplace(author, [&](auto& record) {
record.id = id;
record.desc = desc;
record.done = false;
});
eosio::print("todo#", id, " created");
}

// @abi action                                                                                           
void remove(account_name author, const uint64_t id) {                                                    
  require_auth(author);                                                                                  
  todo_table todos(_self,author);  
  auto iter = todos.find(id);                                                                            
  todos.erase(iter);                                                                                                                                                                                             
  eosio::print("todo#", id, " deleted");                                                                 
}                                                                                                        
                                                                                                         
// @abi action                                                                                           
void toggle(account_name author, const uint64_t id) {                                                    
  require_auth(author);                                                                                  
  todo_table todos(_self,author);                                                                        
  auto iter = todos.find(id);                                                                            
  eosio_assert(iter != todos.end(), "Todo does not exist");                                                                                                                                 
  todos.modify(iter, author, [&](auto& record) {                                                         
    record.done = ! record.done;                                                                         
  });                                                                                                                                                                                                            
  eosio::print("todo#", id, " toggle todo state");                                                       
}  

private:                                                                                                   
// @abi table todos i64                                                                                  
struct todo {                                                                                            
  uint64_t id;                                                                                           
  std::string desc;                                                                                      
  bool done;                                                                                                                                                                                                    
  uint64_t primary_key() const { return id; }                                                            
  EOSLIB_SERIALIZE(todo, (id)(desc)(done))                                                               
};  
typedef eosio::multi_index<N(todos), todo> todo_table;                                                   

};

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。