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
で、ProcessingResult ProcessNextHeaders となっているのは、headerssync.hで、ProcessingResultの構造体を示していたので、このProcessingResultの型で返却して欲しい という書き方なのね。
struct ProcessingResult { std::vector<CBlockHeader> pow_validated_headers; bool success{false}; bool request_more{false}; };