ぼく用あれこれまとめ

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っぽい。
記事メニュー
目安箱バナー