[C++] ファイルの分割

C++におけるファイルの分割はクラス定義単位で行う

### ヘッダファイル
マクロ定義、型定義、プロトタイプ宣言の3つを書くのが基本
C++ではクラスを利用するには、そのクラスが提供するヘッダファイルを取り込む必要がある
以下のようなファイルがあったとする

class POS {
    private:
        int x;
        int y;
    
    public:
        POS();
        int setPos(int tmpx, int tmpy);
}

POS::POS(){
    x = 0;
    y = 0;
}

int POS::setPos(int tmpx, int tmpy){
    x = tmpx;
    y = tmpy;
    
    return 0;
}

これを分割する場合

POS.h

#ifndef POS_H
#define POS_H

class POS {
    private:
        int x;
        int y;
    
    public:
        POS();
        int setPos(int tmpx, int tmpy);
}

#endif

POS.cpp

#include "POS.h"

POS::POS(){
    x = 0;
    y = 0;
}

int POS::setPos(int tmpx, int tmpy){
    x = tmpx;
    y = tmpy;
    
    return 0;
}

つまり、最初にheader情報を見て、全体の流れを理解してからソースファイルを見ていくのね。※以前はcppを先に見て、.hは付加情報かと思っていました…orz

HeadersSyncState::ProcessingResult HeadersSyncState::ProcessNextHeaders(const
std::vector& received_headers, const bool full_headers_message)
で、ProcessingResult ProcessNextHeaders となっているのは、headerssync.hで、ProcessingResultの構造体を示していたので、このProcessingResultの型で返却して欲しい という書き方なのね。

struct ProcessingResult {
        std::vector<CBlockHeader> pow_validated_headers;
        bool success{false};
        bool request_more{false};
    };