schuetzejanett
Erfahrenes Mitglied
Hallo ich habe beim Ausführen eine Zugriffsverletzung beim Schreiben auf eine bestimmte Adresse. Allerdings finde ich den Fehler nicht.
Könnt ihr mir vielleicht sagen wo der fehler liegt.
Also ich habe eine abstrakte klasse Function mit einer Variable area vom Typ Area. In der Kindklasse Sphere möchte ich dieses Feld setzen und dabei kommt es dann zu der Zugriffsverletzung beim Schreiben.
Hoffe es ist ausreichend wenn ich die beiden Klassen hier poste, und nicht den rest drum herum mit, wenn es nicht ausreicht poste ich den rest gerne noch.
Function.h
Function.cpp
Sphere.h
Sphere.cpp
Könnt ihr mir vielleicht sagen wo der fehler liegt.
Also ich habe eine abstrakte klasse Function mit einer Variable area vom Typ Area. In der Kindklasse Sphere möchte ich dieses Feld setzen und dabei kommt es dann zu der Zugriffsverletzung beim Schreiben.
Hoffe es ist ausreichend wenn ich die beiden Klassen hier poste, und nicht den rest drum herum mit, wenn es nicht ausreicht poste ich den rest gerne noch.
Function.h
Code:
#pragma once
using namespace std;
class Function abstract
{
protected:
float u0, u1, v0, v1;
Area *m_area;
public:
Function(void) ;
Area *getArea();
virtual CPunkt3D calcFacePoint(float, float) = 0;
virtual ~Function(void) ;
};
Function.cpp
Code:
#include "StdAfx.h"
#include "Function.h"
Function::Function(void)
{
}
Function::~Function(void)
{
}
Area* Function::getArea()
{
*m_area = Area(u0,u1,v0,v1);
return m_area;
}
Sphere.h
Code:
#pragma once
class Sphere :
public Function
{
private:
float radius;
public:
Sphere(float,float,float,float,float);
~Sphere(void);
CPunkt3D calcFacePoint(float, float );
};
Sphere.cpp
Code:
#include "StdAfx.h"
#include "Sphere.h"
Sphere::Sphere(float ra,float in_u0=(-M_PI/2) ,float in_u1=(M_PI/2), float in_v0=0,float in_v1=2*M_PI)
{
radius = ra;
u0 = in_u0;
u1 = in_u1;
v0 = in_v0;
v1 = in_v1;
*m_area = Area(u0,u1,v0,v1);//hier kommt die zugriffsverletzung
}
Sphere::~Sphere(void)
{
}
CPunkt3D Sphere::calcFacePoint(float u, float v)
{
float x,y,z;
//Berechnung des Punktes und Umrechnung in Bogenmass
x = (radius * cos(u)*cos(v))/180*M_PI;
y = (radius * cos(u)*sin(v))/180*M_PI;
z = (radius * sin(u))/180*M_PI;
return (CPunkt3D (x,y,z));
}
Zuletzt bearbeitet: