what's wrong with this syntax? sorry for the newbie question.
source:
Level::Level()
{
NintyDegreeDirections[4] =
{
(float)(2*(Math.PI)),
(float)(3*(Math.PI)/2),
(float)Math.PI,
(float)Math.PI/2
}
...rest of class
header:
//all necessary includes
class Level
{
private:
static const float NintyDegreeDirections[4];
...rest of header
how do I have an array as a class member? I'm converting from C#
asked Oct 16, 2011 at 9:48
Dollarslice
10.4k22 gold badges62 silver badges90 bronze badges
1 Answer 1
If you want to initialize your static class member in the source file, you need to do it outside of any function body. You also need to retain all of the type information in the definition. E.g.
// In level.cpp, at namespace (global) scope:
const float Level::NintyDegreeDirections[4] =
{
(float)(2*(Math.PI)),
(float)(3*(Math.PI)/2),
(float)Math.PI,
(float)Math.PI/2
};
(This assumes that you have defined a Math namespace or class with an appropriate member PI. Math isn't native to C++.)
answered Oct 16, 2011 at 9:53
Lara Bailey
802k110 gold badges650 silver badges667 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
lang-cpp
staticwill make it a class member, which means that you don't initialize it on a per-instance basis, but once, for the whole class. You trying to initialize it in the constructor suggests you might want an instance member instead of a class member, but I'm not sure.