[英]C++ namespace declerations inside a C++ class
我計划使用boost.beast
實現以下 RESTClient 類。 我在標題中聲明了以下命名空間。
namespace beast = boost::beast;
namespace http = beast::http;
namespace net = boost::asio;
using tcp = boost::asio::ip::tcp;
但是我不想污染全局命名空間。 我希望在類中聲明命名空間。 我嘗試了此處聲明的技術C++ 錯誤避免全局命名空間。 這似乎沒有幫助。 將上述命名空間聲明帶到類內部的優雅方法是什么
class RESTClient {
public:
explicit RESTClient(std::shared_ptr<net::io_context> ioc, std::shared_ptr<Logger> logger, std::shared_ptr<Configuration> config);
virtual ~RESTClient();
private:
std::shared_ptr<Logger> m_logger;
};
該語言根本不允許您對類內的命名空間使用using directive
。 因此,類似以下的代碼會被編譯器拒絕。 即使在類范圍內使用命名空間別名也是錯誤的。
class MyClass {
using namespace std; // error
namespace s = std; // error
};
最可能的解決方案是在函數范圍內聲明命名空間( using namespace
聲明)或命名空間別名。
struct X {
void foo() {
using namespace std;
cout << "foo\n"; // without namespace
}
void bar() {
std::cout << "bar\n"; // using fully qualified name
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.