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 *? Это кажется неправильным.

Другие вопросы по тегам