|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2010
Messaggi: 20
|
[C++]Problema con una classe... credo
Salve ragazzi arrivata l'estate e toltomi dalle scatole un po' di impegni sono tornato a codare un po'.
ho creato una classe, compilo = 0 errori. Un po' stranito ( ) avvio la mia applicazione, crasha. :selo: Crasha nel momento stesso in cui la apro uscendomi la finestra di winzozz 7 "app.exe ha smesso di funzionare... blablabla".Dopo vari tentativi di capire cos'è l'errore ho scoperto che se escludo dal progetto i 2 file (.h e .cpp) della classe il programma parte senza problemi, mentre se i file sono inclusi nel progetto (anche senza aver istanziato alcun oggetto della classe)... va in crash.:fermfum: Ecco la classe: .h Codice:
class Camera
{
public:
Camera();
//cameraS
void FixedPointCamera(int, int);
void OnHorPgCamera(b2Body*, IND_Surface);
void FixedCenterScreenCamera();
~Camera();
//Param settings
void SetSpeedMove(int);
void SetSpeedRotat(int);
void SetDelta();
IND_Camera2d* cam;
private:
int speedMoveCamera;
int speedRotation;
static float delta;
static int widthWin;
static int heightWin;
};
Codice:
Camera::Camera()
{
cam = new IND_Camera2d(0.0f, 0.0f);
}
void Camera::FixedPointCamera(int pntX, int pntY)
{
SetDelta();
cam->SetPosition(pntX, pntY);
Graphic::mI->Render->SetCamera2d(cam);
}
void Camera::OnHorPgCamera(b2Body* body, IND_Surface backg)
{
SetDelta();
int posX = (int) body->GetPosition().x;
int maxX = backg.GetWidth();
if(posX > (widthWin/2) && posX < (maxX - (widthWin/2)))
cam->SetPosition(posX, heightWin);
else
cam->SetPosition((widthWin/2), (heightWin/2));
Graphic::mI->Render->SetCamera2d(cam);
}
void Camera::FixedCenterScreenCamera()
{
SetDelta();
cam->SetPosition((widthWin/2), (heightWin/2));
Graphic::mI->Render->SetCamera2d (cam);
}
void Camera::SetSpeedMove(int speed)
{
speedMoveCamera = speed;
}
void Camera::SetSpeedRotat(int speed)
{
speedRotation = speed;
}
void Camera::SetDelta()
{
delta = Graphic::mI->Render->GetFrameTime() / 1000.0f;
}
Camera::~Camera()
{
delete cam;
}
float Camera::delta = 0.0f;
int Camera::widthWin = Graphic::mI->Window->GetWidth();
int Camera::heightWin = Graphic::mI->Window->GetHeight();
P.S. credo possa avere a che fare con l'allocazione dinamica nel costruttore. |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Dec 2010
Messaggi: 20
|
Risolto
Chiudere per favore. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Colpa dell'inizializzazione dei membri statici?
Quei puntatori puzzano di NULL/random al momento della loro inizializzazione (che avviene molto presto anche se la classe non viene usata). Codice:
int Camera::widthWin = Graphic::mI->Window->GetWidth(); int Camera::heightWin = Graphic::mI->Window->GetHeight();
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:56.










) avvio la mia applicazione, crasha. :selo: Crasha nel momento stesso in cui la apro uscendomi la finestra di winzozz 7 "app.exe ha smesso di funzionare... blablabla".








