C++ Ошибка 1 Ошибка C2227: слева от '->keyPress' должен указывать на класс / структура / объединение / универсальный тип
Привет у меня проблемы с моим кодом. Я получил ошибку C2227.
Мой код:
Game.h
#ifndef GAME_H
#define GAME_H
#include "drawEngine.h"
#include "Sprite.h"
class Runner
{
public:
bool run();
Runner(){};
protected:
bool getInput(char *c);
void timerUpdate();
private:
int *gamer;
double frameCount;
double startTime;
double lastTime;
int posX;
drawEngine drawArea;
};
#endif
Game.cpp
#include "Game.h"
#include <conio.h>
#include <iostream>
#include "drawEngine.h"
#include "Character.h"
#include <windows.h>
using namespace std;
//this will give ME 32 fps
#define GAME_SPEED 25.33
bool Runner::run()
{
drawArea.createSprite(0, '$');
gamer; new Character(&drawArea, 0);
char key = ' ';
startTime = timeGetTime();
frameCount = 0;
lastTime = 0;
posX = 0;
while (key != 'q')
{
while(!getInput(&key))
{
timerUpdate();
}
gamer->keyPress(key);
//cout << "Here's what you pressed: " << key << endl;
}
delete gamer;
cout << frameCount / ((timeGetTime() - startTime) / 100) << " fps " << endl;
cout << "Game Over" << endl;
return true;
}
bool Runner::getInput(char *c)
{
if (kbhit())
{
*c = getch();
return true;
}
}
void Runner::timerUpdate()
{
double currentTime = timeGetTime() - lastTime;
if (currentTime < GAME_SPEED)
return;
frameCount++;
lastTime = timeGetTime();
}
Я никогда не видел этого раньше. Я везде искал ответ, но они не работают с моим кодом. У меня есть другой код, который принадлежит тому же проекту, который я не опубликовал.
2 ответа
Решение
+ Изменить
int *gamer;
в
Character* gamer;
а также
gamer; new Character(&drawArea, 0);
в
gamer = new Character(&drawArea, 0);
Я думаю, проблема в том, что вы определили gamer
как
int *gamer;
Поэтому, когда вы пишете
gamer->keyPress(key);
Вы пытаетесь вызвать функцию-член на int
, что не является законным.
Ты уверен что хочешь gamer
быть int *
? Это кажется неправильным.