【发布时间】:2012-11-01 01:28:50
【问题描述】:
我使用 openGL 创建了一个显示标签(GameLabel)的类,我遇到了 2 个非常奇怪的错误,我无法解决。
错误 C2079:“displayPlayer”使用未定义的类“GameLabel” IntelliSense:不允许不完整的类型
这是我的代码;
Game.cpp中调用标签类的函数
void Game::draw(SDL_Window *window)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // clear window
// draw player
glColor3f(1.0,1.0,1.0);
glBegin(GL_POLYGON);
glVertex3f (xpos, ypos, 0.0); // first corner
glVertex3f (xpos+xsize, ypos, 0.0); // second corner
glVertex3f (xpos+xsize, ypos+ysize, 0.0); // third corner
glVertex3f (xpos, ypos+ysize, 0.0); // fourth corner
glEnd();
GameLabel displayPlayer = new GameLabel(xpos+(xsize/2.0f), ypos+ysize, "Player");
//The ablove line is the one flagging the errors.
现在是 GameLabel.h。
#include <SDL_ttf.h>
#include <GL/glew.h>
#include <string>
#include "Game.h"
class GameLabel
{
public:
GameLabel(float fx, float fy, char stri);
~GameLabel(void);
void textToTexture(const char * str, SDL_Surface* stringImage);
void draw(SDL_Surface* stringImage);
friend class Game;
protected:
SDL_Surface stringImage;
private:
GLuint texID;
GLuint height;
GLuint width;
GLfloat x;
GLfloat y;
char str;
};
最后是 GameLabel.cpp 构造函数
GameLabel::GameLabel(float fx, float fy, char stri)
{
x = fx;
y = fy;
str = stri;
}
【问题讨论】:
-
愚蠢的问题..但您确实包含了 .h 对吗?这些是编译错误还是只是智能感知错误?
-
我不是这是你的核心问题,但
GameLabel displayPlayer = new GameLabel(...);对我来说似乎不合适。您是否忘记将*声明为指针(例如GameLabel * displayPlayer = new ...)? -
另一个问题是,在您的 GameLabel 构造函数中,第三个参数是一个字符,但正在尝试使用字符串。
-
Incomplete type not allowed是intelliSense错误,另一个是complie错误。你说得对,我是为了得到一个指针,我现在已经添加了它,但是这似乎没有影响问题。
标签: c++ visual-studio-2010 visual-c++ opengl