Re: nested namespaces linking
От: Vamp Россия  
Дата: 11.08.09 21:10
Оценка:
AS>// реализация
AS>namespace fw
AS>{
AS> namespace win
AS> {
AS> namespace io
AS> {
AS> struct io_impl
AS> {
AS> };
AS> }
AS> }
AS>}

AS>// то, что видит пользователь


AS>namespace fw

AS>{
AS> namespace io
AS> {
AS> // using namespace fw::win::io
AS> struct io_front: io_impl // ошибка компиляции
AS> {
AS> };
AS> }
AS>}
AS>[/ccode]
Если я правильно понял (в чем я не до конца уверен), то есть два файла. В одном прописаны три пространства имен — fw, внутри которого win, и внутри которого io. Есть второй файл, в котором внутри fw прописан io. В таком случае ничего удивительного, что io_front из fw:win:io не виден в fw:io — это же совершенно другой неймспейс. Было бы как раз очень неправильно, если бы он был виден!

AS>1. Понять причину ошибки компиляции, в смысле, где в стандарте посмотреть (3.4.6 и 7.3 просмотрел, вроде ничего похожего).

Надеюсь, на этот вопрос я ответил.

AS>1 Добиться эффекта, чтобы fw::io мержилось с fw::io(from win) без дополнительного using.

Невозможно, если я все правильно понял.

AS>2. Возможно, есть способ как то порефакторить это, дабы избежать подобных или других проблем.

А почему не классическое решение?
class io {...};
clas win_io : io {...};
class nix_io : io {...};

class user_io : win_io

Или я чего-то кардинально недопонял?
Да здравствует мыло душистое и веревка пушистая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.