我有一个问题,通常我会理解为什么会这样,我没有在main方法中声明该函数。但是类本身包含.h文件,该文件具有此方法的原型,因此我对为什么它不在主要功能范围内感到有些困惑。

  using namespace std;
  #include "Solar.h"


int main(){
  initializeGL();
  Stars *Alpha = new Stars(5.0);
  Planets *Awe = new Planets(.6,2,30,"Awe",0.0,0.0,0.0);
  paintGL();
  return 0;
}

void Solar::initializeGL(){

  glShadeModel(GL_SMOOTH);

  glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
  glClearDepth(1.0f);

  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LEQUAL);

  glHint(GL_PERSPECTIV
  ....
 }


稍后还有一个函数paintGL(),这是头文件

 class Solar {
 public:
  void initializeGL();
  void resizeGL(int width, int height);
  void paintGL();
  .....
private:
  .....
};


我不是C ++的佼佼者,所以将不胜感激。

这是错误

Solar.cpp:4: error: declaration of âvoid Solar::initializeGL()â outside of class is not definition
Solar.cpp:5: error: declaration of âvoid Solar::paintGL()â outside of class is not definition
Solar.cpp: In function âint main()â:
Solar.cpp:8: error: âinitializeGLâ was not declared in this scope
Solar.cpp:11: error: âpaintGLâ was not declared in this scope

最佳答案

Solar是一个类,initializeGLpaintGL是成员函数。如果要使用它们,则必须创建Solar的实例。

Solar solar;
solar.initializeGL();
// ...more
solar.paintGL();


阅读成员函数:http://msdn.microsoft.com/en-us/library/fk812w4w.aspx

08-26 22:42