Ich habe diesen Fehler viele Male zuvor gefunden und fand schließlich Lösungen, aber diese hat mich ratlos. Ich habe eine Klasse 'Mob', die von der Klasse 'Player' geerbt wird. Dies ist Mob.h:Fehler C2504: Basisklasse undefined
#pragma once
#include "PlayState.h"
#include "OmiGame/OmiGame.h"
#include "resources.h"
class PlayState;
class Mob
{
private:
int frames;
int width;
int height;
int time;
sf::Texture textureL;
sf::Texture textureR;
Animation animationL;
Animation animationR;
AnimatedSprite sprite;
bool moveLeft;
bool moveRight;
bool facingRight;
public:
void createMob(std::string l, std::string r, int frames, int width, int height, int time, int x, int y);
void updateMob(omi::Game *game, PlayState *state);
void drawMob(sf::RenderTarget &target);
void setLeft(bool b) { moveLeft = b; }
void setRight(bool b) { moveRight = b; }
bool isLeft() { return moveLeft; }
bool isRight() { return moveRight; }
sf::Vector2f getPosition() { return sprite.getPosition(); }
};
Dies ist Player.h, ab jetzt ist es extrem einfach:
#pragma once
#include "OmiGame/OmiGame.h"
#include "PlayState.h"
#include "Mob.h"
#include "resources.h"
class PlayState;
class Mob;
const int playerFrames = 8;
const int playerWidth = 16;
const int playerHeight = 48;
const int playerTime = 50;
const int playerX = 200;
const int playerY = 200;
class Player : public Mob
{ //the error occurs at this line//
public:
Player();
void update(omi::Game *game, PlayState *state);
void draw(sf::RenderTarget &target);
};
Und wie Sie wahrscheinlich erraten kann, ist dies der Fehler ist:
error C2504: 'Mob' : base class undefined player.h
Ich habe nach vorne erklärt Mob, ich habe hoffentlich keine kreisförmigen Abhängigkeiten behoben. Kann mir bitte jemand helfen?
Sind die Dateien im selben Verzeichnis? – ChiefTwoPencils
Sie wissen, dass es die Kapselung irgendwie verhindert, wenn Sie Accessoren für alle Ihre privaten Mitglieder bereitstellen ... – Deduplicator
@Deduplicator Tut es nicht. Nur vier private Mitglieder haben Zugriffsmechanismen, weil Mobs darauf basierend unterschiedlich reagieren müssen, aber sie müssen diese Mitglieder teilen, damit der wiederverwendete Code auch auf sie zugreifen kann. –