variables in namespaces

Started by
2 comments, last by Damage_Incorporated 20 years, 6 months ago
hums, trying to get variables within namespaces to work. at first i got an error about already defined when simply putting a variable within the namespace, so i made it static wich seemekd to work until now. if i try to access the variable from anywhere else but from within the namespace it decides to just ignore it ie. not alter it, would anyone care to shed some light over this? thanks in advance oh using gcc 3.2(mingw) btw. - Damage Incorporated. [edited by - damage_incorporated on October 15, 2003 11:22:26 AM]
Advertisement
You have to refer to the variable inside the namespace like it was in a class, like this:

theNamespace::theObjectYouWantToAccess

You can also make all the objects in the namespace global by putting this in the source file you are working on:

using namespace yourNamespaceHere;

but this sort of defeats the purpose of a namespace...

You can also get rid of the clumsy syntax by doing this:

using theNamespace::theObjectYouWantToAccess;

This makes only the object you want to access in the namespace global to all members. Do this if you want to access the object a lot. If you are going to access it only a few times, use the first way.
foo.hpp
namespace foo {    // ...    extern int bar;    // ...}

foo.cpp
#include "foo.hpp" int foo::bar = 0; // initialise to whatever you want

And a file that includes foo.hpp (and is linked with foo.cpp):
// ... void pie() {   std::cout << "originally, foo::bar = " << foo::bar << std::endl;   foo::bar = 42;   std::cout << "now, foo::bar = " << foo::bar << std::endl;    // ...} // ...

I assume from your post ("... decides to just ignore it ie. not alter it") that you wanted a non-const variable. Anyway, here is an example of a constant definition, just in case you meant otherwise:

bar.hpp
namespace bar {    // ...    const int universe = 42;    // ...}


[ Google || Start Here || ACCU || STL || Boost || MSDN || GotW || CUJ || MSVC++ Library Fixes || BarrysWorld || E-Mail Me ]

[edited by - Lektrix on October 15, 2003 12:15:14 PM]
[ Google || Start Here || ACCU || STL || Boost || MSDN || GotW || CUJ || MSVC++ Library Fixes || BarrysWorld || [email=lektrix@barrysworld.com]E-Mail Me[/email] ]
Ah, ok well that makes sense, thanks

This topic is closed to new replies.

Advertisement