рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕реВрдХреНрд╖реНрдорддрд╛ред рдПрдХ рднрд╛рдЧ

C ++ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦрддреЗ рд╕рдордп, рдХрдИ рдХреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдХреБрдЫ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рджреВрд╕рд░реЛрдВ рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╡реЗ рдЗрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ, рдЬреЛ "рд╕реЗрд▓реНрдл-рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди" рд╕реЗ рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ, "рд╡рд░реНрдХрд┐рдВрдЧ" рдиреЗрдорд╕реНрдкреЗрд╕ рдХреА рдорджрдж рд╕реЗ рд╣рд▓ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреБрдЫ рдЗрдХрд╛рдИ some_class рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред Some_class рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ detail_class рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдПрдХ рдЕрдиреНрдп рдЗрдХрд╛рдИ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреЗрд╡рд▓ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИред

рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдХреЛрдб рдХрд╛ рд╡рд┐рддрд░рдг рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди 1


namespace lib_namespace { class detail_class { }; class some_class { public: //   private: detail_class a_; //    }; } 


рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд▓рд╕:
1) рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдорд╛рддреНрд░рд╛ рдХрд╛ рдХреЛрдбред

рд╡рд┐рдкрдХреНрд╖:
1) рдХреЛрдб рдХрд╛ рдЦрд░рд╛рдм "рд╕реНрд╡-рдкреНрд░рд▓реЗрдЦрди"ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрдХреНрд╖рд╛рдПрдВ рдХреЗ рдирд╛рдо рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
2) рдЬрдВрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдиреЗрдорд╕реНрдкреЗрд╕ред рдЗрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг, рдпрд╣ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:



рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди 2


 namespace lib_namespace { namespace impl { class detail_class { }; }} namespace lib_namespace { class some_class { public: //   private: impl::detail_class a_; //    }; } 

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдкрд┐рдЫрд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХрдорд┐рдпреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреВрд░ рдХрд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд╡рдпрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
1) рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд╛рдорд╕реНрдерд╛рди рдХреА рд╢реБрд░реВрдЖрдд;
2) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрд┐рд╕реА рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреНрд▓рд╛рд╕ рдореЗрдВ рдФрд░ lib_namespace рдореЗрдВ рд╕реНрдерд┐рдд, рдЗрдореНрдкреНрд▓реАрдлрд┐рдХреНрд╕ :: рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХреЛ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓рд╛рдн:
1) рдЕрдЪреНрдЫрд╛ "рд╕реНрд╡-рджрд╕реНрддрд╛рд╡реЗрдЬ" рдХреЛрдбред

рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдирд╛рдо рд╕реНрдерд╛рди рд╕рдорд╛рдзрд╛рди


 namespace work_lib_namespace { class detail_class { }; class some_class { public: //   private: detail_class a_; //    }; } namespace lib_namespace { using ::work_lib_namespace::some_class; } 


рд╕рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдХреЛ work_lib_namespace рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЦреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдиреБрдХрд╕рд╛рди:
1) рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд╛рдорд╕реНрдерд╛рди рдХреА рд╢реБрд░реВрдЖрддред

рд▓рд╛рдн:
1) "рд╕реНрд╡-рджрд╕реНрддрд╛рд╡реЗрдЬ" рдХреЛрдб;
2) рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдЕрдВрджрд░ some_ns рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реАрдзреЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ):

 namespace work_lib_namespace { using namespace std; class detail_class { public: //  private: vector<int> data_; }; } 


рдирд┐рд╖реНрдХрд░реНрд╖


рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рд╕реНрддреБрдд рд╡рд┐рдзрд┐, рдПрдХ рдУрд░, рдХреЛрдб рдХреЗ рдЕрдЪреНрдЫреЗ "рд╕реНрд╡-рдкреНрд░рд▓реЗрдЦрди" рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдУрд░, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рди рдХреЗрд╡рд▓ cpp рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдмрд▓реНрдХрд┐ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рднреАред

Source: https://habr.com/ru/post/In138085/


All Articles