класса Заголовок:Статический доступ функция член класса
#ifndef _APP_H_
#define _APP_H_
#include "glut.h"
#include "Declare.h"
class App {
private:
static float angle;
public:
App();
int OnExecute();
void OnLoop();
static void OnRender();
bool OnInit();
void OnCleanup();
static void OnResize(int w, int h);
};
#endif
Мое определение OnRender является
#include "App.h"
App::App() {
angle = 0.0f;
}
void App::OnRender() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(0.0f, 0.0f, 10.0f,
0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f);
glRotatef(angle, 0.0f, 1.0f, 0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(-2.0f,-2.0f,0.0f);
glVertex3f(2.0f,0.0f,0.0f);
glVertex3f(0.0f,2.0f,0.0f);
glEnd();
angle+=0.1f;
glutSwapBuffers();
}
Ошибка:
1>App.obj : error LNK2001: unresolved external symbol "private: static float App::angle" ([email protected]@@0MA)
1>App_OnRender.obj : error LNK2019: unresolved external symbol "private: static float App::angle" ([email protected]@@0MA) referenced in function "public: static void __cdecl App::OnRender(void)" ([email protected]@@SAXXZ)
Что-то делать с тем, как я ссылки на статический переменная внутри статической функции. Если я не объявляю угол как static float angle
, то я, конечно, не могу получить к нему доступ через static void OnRender()
. Я должен добавить более подробную информацию. Если я не объявить его как статические, я получаю эту ошибку illegal reference to non-static member App::angle
возможно дубликат [неразрешенный внешний символ на статических членов класса] (http://stackoverflow.com/questions/195207/unresolved-external-symbol-on-static-class-members) –