gpt4 book ai didi

c++ - 使用命名空间 : Convenience vs. 命名空间污染

转载 作者:行者123 更新时间:2023-11-28 00:25:09 26 4
gpt4 key购买 nike

我正在使用 <chrono> 编写一个简单的秒表模板.由于这些函数在 std::chrono 中, 写成 using namespace std::chrono 会很方便以避免膨胀我的代码行。但由于它是一个模板,std::chrono然后将在包含该模板的所有文件中可见。

遇到这种情况我该怎么办?我必须选择其中一个选项,还是有办法避免这两个选项的问题?

最佳答案

您可以在代码中使用命名空间别名:

namespace bc = boost::chrono;

并使用

bc::duration d;

你可以把这个别名放在你需要的函数中 boost::chrono 这样它们就不会污染其他代码。

template<T>
class foo {
void bar() {
namespace bc = boost::chrono;

bc::duration d;
}

// namespace alias bc is no longer in scope.
}

或者,您可以将 using namespace 放在模板/函数的范围内,但是,我认为这会降低可读性,并且可能会导致 boost 之间的冲突和 C++11 std 命名空间。

template<T>
class foo {
void bar() {
using namespace boost::chrono;

duration d;
}

// using namespace boost::chrono is no longer in scope.
}

关于c++ - 使用命名空间 : Convenience vs. 命名空间污染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25442176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com