c ++:初始化成员结构的静态字段的正确方法

Car*_*ero 0 c++ static struct class

我懂了:

// mouse.h
class Mouse {
  private:
    struct Pos {
      static GLfloat x;
      static GLfloat y;
    };    
    static Pos last;
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

// mouse.cpp
// 1)
Mouse::Pos Mouse::last = {};
// 2)
Mouse::Pos Mouse::last = { 0.0, 0.0 };
// 3)
Mouse::last.x = 0.0f;
Mouse::last.y = 0.0f;
Run Code Online (Sandbox Code Playgroud)

1),2)并且3)是我在初始化那个东西的企图.我理解标题应该声明它laststatic,并且源应该初始化它,但是我的所有尝试都出错了.有人可以告诉我这样做的正确方法吗?我错过了一些非常重要的观点吗?这是胡说八道吗?字段是静态的很重要.谢谢.

Rai*_*maj 7

您不需要将Pos内容声明为静态.

// mouse.h

class Mouse {
  private:
    struct Pos {
      GLfloat x;
      GLfloat y;
    };    
    static Pos last;
}
Run Code Online (Sandbox Code Playgroud)

Mouse::Pos Mouse::last = { 0.0, 0.0 };

这应该也有效