c++ 在添加内容时可以使用名称空间吗?或者这会让人感到困惑?

pbpqsu0x  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(141)

所以我有一个包含许多文件的库,我想把每个文件都添加到库的命名空间中。在我的类声明中,我现在有:

namespace Vira {

template <typename GeometryT, typename AlbedoT>
class Camera : public Vira::RigidBody<GeometryT> {...};

};

这很好,但是感觉声明内部好像因为我需要在使用前追加Vira::多少次而变得混乱。使用以下代码是否是个好主意:

using namespace Vira;

namespace Vira {

template <typename GeometryT, typename LightT>
class Camera : public RigidBody<GeometryT> {...};

};

或者这是不清楚/令人困惑/不好的做法?
这是我第一次使用名称空间。我最接近的经验来自python,它的常见做法是import AnnoyinglyLongName as aln或类似的东西。我知道这在C++中在某些情况下也是有用的。例如,我经常使用以下内容:

template <typename GeometryT>
using Vec3 = Vira::Vector3<GeometryT>;

但我不确定在向名称空间添加内容时广泛使用名称空间是否是个好主意。

50few1ms

50few1ms1#

命名空间内的代码不需要显式限定同一命名空间的成员。因此,在以下代码中:

namespace Vira {

template <typename GeometryT, typename AlbedoT>
class Camera : public Vira::RigidBody<GeometryT> {...};

};

Vira::鉴定是多余的,可以删除:

namespace Vira {

template <typename GeometryT, typename AlbedoT>
class Camera : public RigidBody<GeometryT> {...};

};

相关问题