Я объявил класс X в Xh следующим образом:C++ включение имен в .cc файлов
namespace Foo {
class X{
....
};
}
В X.cc Я хотел бы определить конструктор, методы X.
Do I необходимо заключить все мои определения внутри namespace Foo {...}
или префикс X как Foo :: X :: для каждого метода?
кажется, что иногда я могу только сказать (с использованием пространства имен Foo) и не упоминать об этом снова, т.е. просто определить методы, как X :: X() {...}
Что такое правильный подход Вот ?
'+ 1' для подготовки рекомендаций в отношении использования директив. Они ведут к темной стороне языка. – sbi
@sbi: Я понимаю, что мы не хотим «использовать пространство имен N» в файле .h. Почему это плохо в файле .cc? – user231536
@ user231536: Это затрудняет понимание исходного кода, потому что вы не знаете, откуда пришли имена. Он вносит _all_ имен в охватываемое пространство имен, что может вызвать широкий спектр болезненных проблем, одним из самых больших из которых является то, что вы можете непреднамеренно привести к дополнительным перегрузкам функций во время разрешения перегрузки, что может привести к тому, что неправильная функция будет (или сумасшедшие ошибки времени компиляции). –