Я работаю над небольшой домашней работой на C++, и у меня есть небольшая проблема. Ошибка заключается в следующем, когда я пытаюсь запустить программу:Советник, делающий объект
Exception thrown at 0x00E0193B in ConsoleApplication6.exe: 0xC0000005: Access violation writing location 0x00000000.
Если есть обработчик для этого исключения, программа может быть безопасно продолжена.
Я попытался отладить свою программу, и я заметил, что эта программа закончилась, когда я попытаюсь создать объект c1. Метод v_setR делает добро, но v_setCenter дает эту ошибку. У меня нет идеи, что я делаю плохо, но я думаю, что это простая ошибка. Спасибо за помощь :)
Это главный каст:
#include "stdafx.h"
#include <iostream>
#include "Punkt.h"
#include "Okrag.h"
#include "math.h"
/*double Circle::d_distance(Point pcOther)
{
double d_result = sqrt(
(pd_point.d_getX - pcOther.d_getX)*(pd_point.d_getX - pcOther.d_getX)
+ (pd_point.d_getY - pcOther.d_getY)*(pd_point.d_getY - pcOther.d_getY)
);
return d_result - d_r;
}*/
Circle::Circle(double dX, double dY, double dR)
{
v_setR(dR);
v_setCenter(dX, dY);
}
void main()
{
Point p1(1, 2);
Circle c1(5,4,4);
//std::cout << c1.d_distance(p1);
system("pause");
}
Это point.h и circle.h
class Point
{
friend class Circle;
//friend double d_distance(Point &pcOther);
public:
Point() { };
Point(double dX, double dY) : d_x(dX), d_y(dY) { };
// Setters
void v_setX(double dX) { this->d_x = dX; }
void v_setY(double dY) { this->d_y = dY; }
void v_setPoint(double dX, double dY) { this->d_x = dX; this->d_y = dY; }
// Getters
double d_getX() { return d_x; }
double d_getY() { return d_y; }
private:
double d_x, d_y;
};
class Circle
{
friend class Point;
public:
Circle();
Circle(double dX, double dY, double dR);
// Setters
void v_setR(double dR) { d_r = dR; }
void v_setCenter(double dX, double dY) { pd_point->v_setPoint(dX, dY); }
// Getters
double d_getR() { return d_r; }
Point *d_getCenter() { return pd_point; }
//double d_distance(Point &pcOther);
private:
Point *pd_point;
double d_r;
};
Вы не выделяете какую-либо память для 'pd_point'. Почему у вас есть это как указатель? – TartanLlama
Я думаю, что вы можете определить точку как структуру с общедоступными значениями для координат. Не нужно указывать указатель на класс круга. –