views:

186

answers:

2

Hi, I want to define an structure, where some math constants would be stored.
Here what I've got now:

struct consts {
    //salt density kg/m3
   static const double gamma;
};

const double consts::gamma = 2350;

It works fine, but there would be more than 10 floating point constants, so I doesn't want to wrote 'static const' before each of them. And define something like that:

static const struct consts {
    //salt density kg/m3
   double gamma;
};

const double consts::gamma = 2350;

It look fine, but I got these errors:
1. member function redeclaration not allowed
2. a nonstatic data member may not be defined outside its class

I wondering if there any C++ way to do it?

+14  A: 

Use a namespace rather than trying to make a struct into a namespace.

namespace consts{
    const double gamma = 2350;
}

The method of accessing the data also has exactly the same synatx. So for example:

double delta = 3 * consts::gamma;
Yacoby
Sorry, I stamped over your change :(
David Rodríguez - dribeas
@David No problem, thanks for the edit. I almost missed the fact that I had forgotten to put a type there.
Yacoby
Thanks, that is exactly what I want :)
Andrew
+7  A: 

It sounds like you really just want a namespace:

namespace consts { 
    const double gamma = 2350.0;
    // ...
}

Except I'd try to come up with a better name than consts for it.

Jerry Coffin
Sorry about the edit, I clicked on the wrong button.
Brian Neal