В основном я работаю с некоторыми предоставленными заголовочными файлами в следующем формате:
#include <iostream>
using namespace std;
class bar
{
public:
void printSomething(void)
{
cout << "This is an example." << endl;
}
}
У меня вопрос, так как я не могу изменить предоставленный заголовок, как я могу удалить std
пространство имен в моих файлах и вернуться к глобальному пространству имен по умолчанию? Я пытался «using namespace ::;
» а также «using namespace ;
«, но компилятор не в восторге ни от одного из них. Любые идеи о том, как заставить чистый лист с пространствами имен?
Ты не можешь Вот почему using namespace
пункт так evul. Вы можете включить эти заголовки в другое пространство имен:
namespace bleh {
#include "library_that_uses_evul_using_namespace.h"}
Это будет загрязнять только bleh
Пространство имен.
Вы не можете избавиться от «использования пространства имен». Вы можете иметь несколько операторов «using namespace», и они являются аддитивными.
Однако вы можете заключить вредоносный заголовок в собственное пространство имен:
namespace Crap
{
#include "maliciousHeader.h"}
Таким образом, «использование пространства имен std» применимо только к пространству имен Crap. Я бы рекомендовал поместить приведенный выше код в другой заголовок, который является заголовком, который вы фактически включаете в свою программу.