SnailCore: 开发实例

警告
本文最后更新于 2020-10-15,文中内容可能已过时。

项目结构

1
2
3
4
5
.
├── CMakeLists.txt
└── main.cpp

0 directories, 2 files

CMakeLists.txt

1
2
3
########################################################
snail_add_bin(test main.cpp)
snail_bin_dep(test util shell)

main.cpp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <shell/main.hpp>
#include <util/calendar.hpp>
#include <util/log.hpp>

using namespace snail;
using namespace std;

class playground_t: public snail::Main
{
public:
    using base_t = snail::Main;
    using base_t::base_t;

    playground_t() {};
    ~playground_t() {};

    const char* name() const override { return "playground_t"; };
    bool do_init() override;
    void run() override;
};

bool playground_t::do_init()
{
    if (!base_t::do_init()) return false;

    return true;
}

void playground_t::run()
{
    base_t::run();

    for (auto& td : _calendar.trading_days())
    {
        cout << "night:" << td.night << ", day:" << td.day << endl;
    }

    if (_calendar.has_session(microtime::now()))
    {
        cout << "has session:" << microtime::now().to_zgc_str() << endl;
    }
}

int main(int argc, char* argv[])
{
    playground_t pl;
    return pl.main(argc, argv);
}

注意事项

  1. bool do_init() override; 的最后,一定要返回 return true;,否则会默认 false,导致后面面的 run 不会再继续运行。

    1
    2
    3
    4
    5
    6
    
        bool playground_t::do_init()
        {
           if (!base_t::do_init()) return false;
    
           return true;  // 需要加上
        }
  2. run 继承的时候,最好加上 base_t::run(); 以保证可以调用其他的参数

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    void playground_t::run()
    {
       base_t::run();  // 需要加上
    
       for (auto& td : _calendar.trading_days())
       {
           cout << "night:" << td.night << ", day:" << td.day << endl;
       }
    
       if (_calendar.has_session(microtime::now()))
       {
           cout << "has session:" << microtime::now().to_zgc_str() << endl;
       }
    }

相关内容

william 支付宝支付宝
william 微信微信
0%