Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Static struct in C++

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?

like image 509
Andrew Avatar asked Jun 11 '10 14:06

Andrew


2 Answers

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;
like image 109
Yacoby Avatar answered Oct 29 '22 00:10

Yacoby


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.

like image 26
Jerry Coffin Avatar answered Oct 29 '22 00:10

Jerry Coffin