Skip to Main Content
C++ Cookbook
book

C++ Cookbook

by D. Ryan Stephens, Christopher Diggins, Jonathan Turkanis, Jeff Cogswell
November 2005
Beginner to intermediate content levelBeginner to intermediate
594 pages
16h 23m
English
O'Reilly Media, Inc.
Content preview from C++ Cookbook

2.4. Preventing Name Collisions with Namespaces

Problem

You have names from unrelated modules that are clashing, or you want to avoid such clashes by creating logical groups of code in advance.

Solution

Use namespaces to modularize code. With namespaces, you can group large groups of code in separate files into a single namespace. You can nest namespaces as deeply as necessary to partition a large module into submodules, and consumers of your module can selectively expose the elements in your namespace they want to use. Example 2-5 shows a few of the ways you can use a namespace.

Example 2-5. Using namespaces

// Devices.h #ifndef DEVICES_H_ _ #define DEVICES_H_ _ #include <string> #include <list> namespace hardware { class Device { public: Device() : uptime_(0), status_("unknown") {} unsigned long getUptime() const; std::string getStatus() const; void reset(); private: unsigned long uptime_; std::string status_; }; class DeviceMgr { public: void getDeviceIds(std::list<std::string>& ids) const; Device getDevice(const std::string& id) const; // Other stuff... }; } #endif // DEVICES_H_ _ // Devices.cpp #include "Devices.h" #include <string> #include <list> namespace hardware { using std::string; using std::list; unsigned long Device::getUptime() const { return(uptime_); } string Device::getStatus() const { return(status_); } void DeviceMgr::getDeviceIds(list<string>& ids) const { } Device DeviceMgr::getDevice(const string& id) const { Device d; return(d); } } // DeviceWidget.h #ifndef ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++ System Programming Cookbook

C++ System Programming Cookbook

Onorato Vaticone

Publisher Resources

ISBN: 0596007612Supplemental ContentErrata Page