ぼく用あれこれまとめ
namespace(名前空間)
最終更新:
bokuyo
-
view
名前空間
名前空間使うと便利だよ。
class BokuyoEngine::Direct3D::Manager { public: Manager(); ~Manager(); bool Initialize(); bool Uninitialize(); private: LPDIRECT3D9 m_direct3D; LPDIRECT3DDEVICE9 m_device; };
- Visual C++ 2010の環境だとインテリセンスによる補完が利いて打つ手間が減る。
using ディレクティブは適材適所に。
namespaceを使いまくると、すごく長くなって嫌気がさす。
void Update() { BokuyoEngine::Game::Actor::State::StateMachine automaton(BokuyoEngine::Game::Actor::State::SetEntryState(BokuyoEngine::Game::Actor::States::WalkingState)); }
- そういうときはusing ディレクティブを使おう。
void Update() { using namespace BokuyoEngine::Game::Actor; State::StateMachine automaton(State::SetEntryState(States::WalkingState)); }
- using namespace ~ を宣言すると、宣言したスコープ内では長々した名前空間が省略できるぞ!
- ただし、グローバルスコープでusing namespaceを使うのはオススメしないぞ☆
- 名前空間だけでなく、特定の型や関数などをusing ディレクティブで省略できたりするぞ!
- 「std::cout」だけ使う場合は、「using namespace std;」より「using std::cout」のほうがなんだかスマートだぞ☆
void Update() { using namespace BokuyoEngine::Game; using BokuyoEngine::Game::Actor::State::StateMachine; using BokuyoEngine::Game::Actor::States::WalkingState; StateMachine automaton(Actor::State::SetEntryState(WalkingState)); }
名前空間でクラステンプレートの前方宣言
namespace BokuyoEngine { template <typename ParamType> class Box; }
template <typename ParamType> class BokuyoEngine::Box { ParamType const m_param; };
template <> class BokuyoEngine::Box { ; };
- 関係ないけど、前方宣言っていうとC++っぽいけど、プロトタイプ宣言って言うとCっぽい。