?
hi leute!
ich hab ein problem mit dem konstruktor...find den fehler einfach net;-(
vielleicht kann jemand helfen!??
cu
EnergyRobot.h:
-----------------
#include "VirtualRobot.h"
#include "Engine.h"
const maxEnergyLevel = 100; // entspricht 100% bei vollstaendiger Aufladung
class EnergyRobot: public VirtualRobot
{
public:
EnergyRobot(int x_start, int y_start,unsigned energyLevel); // Methode d. Eltern ueberschreiben
bool bewegen (int deltaX, int deltaY);
unsigned getEnergyLevel();
bool aufladen();
void print();
private:
Engine engine;
};
Engine.h:
--------
class Engine
{
public:
//EnergyRobot(int x_start, int y_start, unsigned energyLevel)
unsigned getEnergyLevel();
Engine(unsigned energyLevel);
bool aufladen();
bool entladen(int deltaX, int deltaY/*,unsigned energyLevel*/);
void print();
private:
unsigned energyLevel;
};
VirtualRobot.h:
--------------
class VirtualRobot
{
protected :
bool eingeschaltet;
int x; // x position des Roboters (in meter)
int y; // y position des Roboters (in meter)
public:
VirtualRobot ( int x_start, int y_start);
bool bewegen ( int deltaX // wieviele meter in x richtung
, int deltaY ); // wieviele Meter in y richtung
bool einschalten ();
void ausschalten ();
int getX (); // liefert aktuelle x position zurueck
int getY (); // liefert aktuelle y position zurueck
void print();
};
Engine.cpp:
------------
#include <math.h>
#include "EnergyRobot.h"
Engine::Engine(unsigned energyLevel)
{
Engine::energyLevel = energyLevel;
}
unsigned Engine::getEnergyLevel()
{
return energyLevel;
}
bool Engine::aufladen()
{
{
energyLevel = maxEnergyLevel;
return true;
}
return false;
}
bool Engine::entladen(int deltaX, int deltaY)
{
if(energyLevel >= (abs(deltaX)+abs(deltaY)))
{
energyLevel -= (abs(deltaX)+ abs(deltaY));
//VirtualRobot::bewegen(deltaX, deltaY);
return true;
}
return false;
}
VirtualRobot.cpp:
-----------------
#include <iostream.h>
#include <string.h>
#include "VirtualRobot.h"
VirtualRobot::VirtualRobot(int x_start, int y_start )
{
x = x_start;
y = y_start;
}
bool VirtualRobot::einschalten ()
{
eingeschaltet = true;
return true;
}
void VirtualRobot::ausschalten ()
{
eingeschaltet = false;
}
bool VirtualRobot::bewegen (int deltaX, int deltaY)
{
if (eingeschaltet)
{
x += deltaX;
y += deltaY;
return true;
}
else // ein ausgeschalteter VirtualRobot kann sich nicht bewegen!
return false;
}
int VirtualRobot::getX ()
{
return x;
}
int VirtualRobot::getY ()
{
return y;
}
void VirtualRobot::print()
{
cout << "position = [ " << x <<" ," << y << " ]" << endl;
}
EnergyRobot.cpp:
----------------
#include <iostream.h>
#include <math.h>
#include "EnergyRobot.h"
EnergyRobot::EnergyRobot(int x_start, int y_start, unsigned energyLevel)
:VirtualRobot(x_start, y_start)
{
//EnergyRobot::energyLevel = energyLevel; //entladen (0) oder aufgeladen (100)
}
unsigned EnergyRobot::getEnergyLevel()
{
return engine.getEnergyLevel();
}
bool EnergyRobot::bewegen(int deltaX, int deltaY)
{
if(engine.entladen(deltaX, deltaY) == true)
{
VirtualRobot::bewegen(deltaX, deltaY);
return true;
}
return false;
}
bool EnergyRobot::aufladen()
{
return engine.aufladen();
}
void EnergyRobot::print() // Ausgabe auf Konsole
{
VirtualRobot::print();
unsigned energyLevel =0;
cout<<"EnergyLevel =[ "<<energyLevel<<" ]"<<endl<<endl;
}
--------------------Konfiguration: robot - Win32 Debug--------------------
Kompilierung läuft...
EnergyRobot.cpp
Energyrobot.cpp(20) : error C2512: 'Engine' : Kein geeigneter Standardkonstruktor verfuegbar