Ik heb dit in een library zitten:
Nu wil ik in een stuk applicatie-code die COM wrapper kunnen gebruiken als COM::Wrapper. Ik wil dus specificeren dat ik de EvdW::COM::Wrapper bedoel als ik COM::Wrapper zeg.
Ik zou using namespace EvdW; kunnen gebruiken, maar op die manier krijg ik alle prut uit de EvdW namespace in mijn scope, en dat wil ik voorkomen.
Een typedef EvdW::COM::Wrapper COM_Wrapper; doet bijna wat ik wil, maar ook dit vind ik niet echt mooi.
Tot slot is het mogelijk om een extra namespace aan de applicatie-code toe te voegen waarin ik precies structureel per namespace aangeef welke identifiers ik wil gebruiken:
Dit werkt prima, maar deze manier lijkt me een beetje overkill voor wat ik wil..
Is er misschien een andere mooiere methode om het gewenste effect te verkrijgen, of is dit binnen C++ gewoon niet mogelijk ? En als dit laatste het geval is, zijn jullie het dan met me eens dat dit een zwak punt van het C++ namespace systeem is ?
code:
1
2
3
4
5
6
7
| namespace EvdW // namespace die ik gebruik voor mn persoonlijke prut
{
namespace COM // tooltjes voor COM objecten
{
class Wrapper { /* ... */ }; // wrapper om COM objecten heen
}
} |
Nu wil ik in een stuk applicatie-code die COM wrapper kunnen gebruiken als COM::Wrapper. Ik wil dus specificeren dat ik de EvdW::COM::Wrapper bedoel als ik COM::Wrapper zeg.
Ik zou using namespace EvdW; kunnen gebruiken, maar op die manier krijg ik alle prut uit de EvdW namespace in mijn scope, en dat wil ik voorkomen.
Een typedef EvdW::COM::Wrapper COM_Wrapper; doet bijna wat ik wil, maar ook dit vind ik niet echt mooi.
Tot slot is het mogelijk om een extra namespace aan de applicatie-code toe te voegen waarin ik precies structureel per namespace aangeef welke identifiers ik wil gebruiken:
code:
1
2
3
4
5
6
7
8
9
| namespace LibraryStuff
{
namespace COM
{
using EvdW::COM::Wrapper;
}
}
using namespace LibraryStuff; |
Dit werkt prima, maar deze manier lijkt me een beetje overkill voor wat ik wil..
Is er misschien een andere mooiere methode om het gewenste effect te verkrijgen, of is dit binnen C++ gewoon niet mogelijk ? En als dit laatste het geval is, zijn jullie het dan met me eens dat dit een zwak punt van het C++ namespace systeem is ?