【发布时间】:2018-12-10 02:50:00
【问题描述】:
我有一些变量和方法需要从任何地方都可以轻松访问,同时保持它们井井有条。我曾经将它们保存在按“类别”组织的类中,并将对这些类的引用传递给需要它们的函数/方法(通过参数)。
后来我意识到太乱,太丑,很难改变,所以我把通过参数的引用去掉,全局声明。
然后我意识到这些类中的大多数只有一个实例,并将所有方法和成员变量设为静态,并删除了每个类中的唯一实例。
然后我在互联网上阅读了一些东西并意识到(是的,再次)使用命名空间而不是类会更好(我可以使用using namespace,这非常方便)。现在有点像这样:
// header
namespace Graphics
{
// some functions
void Initialize(HWND hWnd);
void CreateTextureRenderTarget(UINT Width, UINT Height, DXGI_FORMAT Format, ID3D11RenderTargetView** RenterTargetOutput, ID3D11ShaderResourceView** ShaderResourceOutput, bool GenerateMips = false);
// ...
extern CComPtr<IDXGIFactory> Factory;
extern CComPtr<IDXGIAdapter> Adapter;
extern CComPtr<IDXGIOutput> Output; // The output (display monitor)
extern CComPtr<IDXGISwapChain> SwapChain;
extern CComPtr<ID3D11Device> Device;
extern CComPtr<ID3D11DeviceContext> ImmediateContext;
// ...
}
// source
namespace Graphics
{
CComPtr<IDXGIFactory> Factory;
CComPtr<IDXGIAdapter> Adapter;
CComPtr<IDXGIOutput> Output;
CComPtr<IDXGISwapChain> SwapChain;
CComPtr<ID3D11Device> Device;
CComPtr<ID3D11DeviceContext> ImmediateContext;
// ...
void Initialize(HWND hWnd)
{
// ...
现在我想知道:像我这样使用命名空间有什么优点和缺点?
【问题讨论】:
标签: c++ namespaces