Wiecie dlaczego kompilator nie widzi mojej klasy bazowej?
Klasa bazowa (wirtualna):
#pragma once
#include "stdafx.h"
class Game;
class Bonus
{
public:
friend class BonusMenager;
Bonus();
virtual ~Bonus() = default;
sf::Sprite obj;
sf::Texture texture;
sf::Vector2f gravity;
sf::Vector2f moveVector;
void update(float DetlaTime);
void Draw(sf::RenderWindow & window);
bool destTimer(float DeltaTime);
bool getDestroyStatus();
virtual void startAction() = 0;
virtual void stopAction() = 0;
virtual void action(float DeltaTime) = 0; // obsługa tego co się dzieje w trakcie akcji
protected:
float destructionTimer;
bool visibilyty;
bool destructionStatus;
Game* game;
};
Klasa Pochodna (jest zaznaczenie ze klasa Bonus się pojawi):
#pragma once
#include "stdafx.h"
class Game;
class Bonus;
class PaddleStick :
public virtual Bonus
{
public:
PaddleStick(Game* ga, float x, float y);
virtual ~PaddleStick() = default;
void action(float DeltaTime);
void startAction();
void stopAction();
};
dodatko w stdafx Bonus.h jest przed PaddleStick.h:
// stdafx.h: dołącz plik do standardowych systemowych plików dołączanych,
// lub specyficzne dla projektu pliki dołączane, które są często wykorzystywane, ale
// są rzadko zmieniane
//
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <thread>
#include <iostream>
#include <list>
#include <iterator>
#include <string>
#include <sstream>
// TODO: W tym miejscu odwołaj się do dodatkowych nagłówków wymaganych przez program
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/Audio.hpp>
#include "Game.h"
#include "Player.h"
#include "Ball.h"
#include "SlabMenager.h"
#include "Slab.h"
#include "Bonus.h"
#include "BonusMenager.h"
#include "BallMultipler.h"
#include "PaddleShrink.h"
#include "PaddleShuter.h"
#include "PaddleStick.h"
#include "PaddleTenter.h"
#include "SpeedAccelerant.h"
Nie wiem czy to ma znaczenie ale w konstruktorze PaddleStick korzystam z konstruktora klasy bazowej (wcześniej nie korzystałem i też nie widział Bazowej):
#include "PaddleStick.h"
PaddleStick::PaddleStick(Game * ga, float x, float y) : Bonus()
{
game = ga;
texture.loadFromFile("PaddleStick.png");
obj.setTexture(texture);
obj.setOrigin(obj.getLocalBounds().width / 2, obj.getLocalBounds().height / 2);
obj.setPosition(x, y);
}
void PaddleStick::action(float DeltaTime)
{
}
void PaddleStick::startAction()
{
}
void PaddleStick::stopAction()
{
}
i konstruktor klasy bazowej:
Bonus::Bonus()
{
gravity = sf::Vector2f{ 0.0f, 20 };
moveVector = sf::Vector2f{ 0.0f, -50.0f };
destructionTimer = float{ 4.0f };
visibilyty = bool{ true };
destructionStatus = bool{ false };
}
Kompilator wyrzuca taki błąd "class": klasa podstawowa niezdefiniowana". Dodam, że gdy przerzucę Bonus.h w nieprawidłowe miejsce (za klasy pochodne) w stdaxf.h to błędów jest kilkadziesiąt razy więcej. Nie jest to dziwne ale może pomoże.
Link do całego projektu github:
https://github.com/Blauto/2d_Game/tree/master/Arcanoid/Arcanoid
Dziękuję za pomoc!