namespaceを使った汎用的処理の書き方

汎用的な処理を書きたいが、クラスを定義して、newするのが面倒くさい。
かといって、シングルトン化するのも面倒くさい。
そういった場合は、C言語的な書き方になるのかもしれないが、namespaceをクラス名のように扱えば、いちいちnewでインスタンス生成しなくても、処理を呼び出せる。

hoge.h

namespace HogeHoge{
bool isStart(); // publicのように扱いたい関数
};

hoge.cpp

#include "hoge.h"

bool isStart_{false}; // privateメンバ変数のように扱いたい変数

void innerProc(); // privateメンバ関数のように扱いたい関数

namespace HogeHoge{
bool isStart(){
  return isStart;
}
void innerProc(){
  // 適当な内部処理
}
};

外部からの呼び出し例

bool hoge;
hoge = HogeHoge::isStart();

考え方としては、ヘッダ側にpublic要素、cpp側にprivate要素を記述する。

ただし、これがお作法的によろしいかは謎。よろしくない気はする。
デバッグ用コードとかで設計をしっかり考えたくないときに使う分にはよろしいのでは。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です