Welcome Guest ( Log In | Register )

Help | Search | Members | Calendar

 
"Защищенные" классы в C++
« Next Oldest | Next Newest » Track this topic | Email this topic | Print this topic
Master of Puppets
Posted: Nov 2 2008, 12:02

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

Здрассьте, уважаемые знатоки.
Как известно, в таких языках, как Java есть фича, называемая "пекеджами" (package). В рамках пекеджа класс можно объявить как "private", что значает, что классы, не являющиеся членами данного пекиджа не будут иметь к нему доступа.
Внимание, вопрос:
какие способы вы знаете, чтобы реализовать нечто подобное в C++? Поясню. Не нужно никаких пекиджей, нужно просто чтобы к классу X имели доступ только несколько определенных классов (например, классы только из неймспейса, в котором содержится наш класс X). Жду ваших мнений по этому поводу.

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
Dream_InspectoR
Posted: Nov 2 2008, 14:17

Eye of the Vision

Group: Moderator
Member No.: 614

Joined: February 10, 2004

Неймспейс и камент - кто залезет сюда - убью smile.gif Либо в dll отдельный и никаких хедеров.

--------------------
Kill'em!!! Kill'em ALL!!!
 
        Top
stranger
Posted: Nov 2 2008, 17:09

Wise Dreamer

Group: Wheel
Member No.: 5

Joined: February 20, 2003

No way to do that in C++. Dream's method is the best possible I guess.
 
       Top
DZUK
Posted: Nov 2 2008, 22:50

Light Bringer

Group: Elite Member
Member No.: 2803

Joined: March 29, 2007

Ну можно классы которые должны видеть друг друга, каком нить большом классе обьявить. Правдо не знаю к чему может это все привести.

--------------------
Обьединенные части целого есть нечто большее, чем просто их сумма.
 
     Top
ShaheN
Posted: Nov 4 2008, 12:32

Wise Dreamer

Group: Elite Member
Member No.: 68

Joined: March 19, 2003

QUOTE (In the immortal words of Master of Puppets, since Nov 2 2008, 12:02...)
Здрассьте, уважаемые знатоки.
Как известно, в таких языках, как Java есть фича, называемая "пекеджами" (package). В рамках пекеджа класс можно объявить как "private", что значает, что классы, не являющиеся членами данного пекиджа не будут иметь к нему доступа.
Внимание, вопрос:
какие способы вы знаете, чтобы реализовать нечто подобное в C++? Поясню. Не нужно никаких пекиджей, нужно просто чтобы к классу X имели доступ только несколько определенных классов (например, классы только из неймспейса, в котором содержится наш класс X). Жду ваших мнений по этому поводу.

Надо уточнить, что понимать под фразой "доступ к классу Х". Создание/удаление обьектов? вызов интерфейсных функций? наследование от Х? инстантация типа (если Х - шаблон), и то и другое и третье? или что-то еще ? smile.gif

В любом случае, можно объявить все внутренности класса private (ну или protected, если нужно наследоваться), и воспользоваться отношением friend.

--------------------
В Советском Союзе секса нет !
 
      Top
Master of Puppets
Posted: Nov 4 2008, 14:59

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

QUOTE (In the immortal words of ShaheN, since Nov 4 2008, 12:32)
QUOTE (In the immortal words of Master of Puppets, since Nov 2 2008, 12:02...)
Здрассьте, уважаемые знатоки.
Как известно, в таких языках, как Java есть фича, называемая "пекеджами" (package). В рамках пекеджа класс можно объявить как "private", что значает, что классы, не являющиеся членами данного пекиджа не будут иметь к нему доступа.
Внимание, вопрос:
какие способы вы знаете, чтобы реализовать нечто подобное в C++? Поясню. Не нужно никаких пекиджей, нужно просто чтобы к классу X имели доступ только несколько определенных классов (например, классы только из неймспейса, в котором содержится наш класс X). Жду ваших мнений по этому поводу.

Надо уточнить, что понимать под фразой "доступ к классу Х". Создание/удаление обьектов? вызов интерфейсных функций? наследование от Х? инстантация типа (если Х - шаблон), и то и другое и третье? или что-то еще ? smile.gif

В любом случае, можно объявить все внутренности класса private (ну или protected, если нужно наследоваться), и воспользоваться отношением friend.

Речь шла о создании объектов )

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
ShaheN
Posted: Nov 4 2008, 21:17

Wise Dreamer

Group: Elite Member
Member No.: 68

Joined: March 19, 2003

QUOTE (In the immortal words of Master of Puppets, since Nov 4 2008, 14:59...)
Речь шла о создании объектов )

Можно объявить конструкторы классов закрытыми (private), и объявить тот единственный класс, который может создавать объекты, их другом (friend).
Все прямо как в жизни smile.gif

--------------------
В Советском Союзе секса нет !
 
      Top
6 replies since Nov 2 2008, 12:02 Track this topic | Email this topic | Print this topic

<< Back to Programming languages

 




Arminco Global Telecommunications