У меня есть объявление класса так:Определение класса в пространстве имен
// bar.h
namespace foo {
class bar {
// members both public and private
}
}
Когда я определить класс, я хотел бы сделать это
// bar.cpp
namespace foo::bar {
// member definitions
}
Вместо
namespace foo {
bar::x() {}
bar::y() {}
bar::z() {}
}
Но я не могу. Почему это? Я думал, что классы объявили пространства имен, но я должен ошибаться. Должен ли оператор области действия разрешать область пространства имен, а затем область класса?
Я спрашиваю, потому что в любое время, когда у вас есть имя класса нетривиальной длины, он может стать очень повторяющимся для повторного ввода имени класса, особенно если у него более нескольких членов. Может быть, это похоже на то, чтобы люди определяли интерфейсы небольших классов.
Вам не хватает закрывающего ';' вашего определения 'bar'. – ChiefTwoPencils