ぼく用あれこれまとめ
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っぽい。