Hej to znowu ja:)
Podczas pisania programu pojawił się u mnie mały problem - mianowicie nie mogę przypisać zmiennych do stworzonych obiektów i nie mam pojęcia dlaczego - tu część tego co naskrobałem:
#pragma once
class Punkt
{
protected:
double x,y;
public:
Punkt(double a, double b);
double getX();
double getY();
~Punkt(void);
};
#include "StdAfx.h"
#include "Punkt.h"
Punkt::Punkt(double a, double b)
{
x=a;
y=b;
}
double Punkt::getX()
{
return x;
}
double Punkt::getY()
{
return y;
}
Punkt::~Punkt(void)
{
}
#ifndef FIGURY
#define FIGURY
#include "stdafx.h"
#include "Punkt.h"
class Figura {
protected:
string nazwa;
string kolor;
public:
Punkt P1, P2, P3, P4;
Figura(int=1, int=1, int=1, int=1, int=1, int=1, int=1, int=1);
virtual string przedstaw_sie();
virtual double Obwod() =0;
virtual double Pole() =0;
virtual ~Figura() {};
double Dlugosc(POINT, POINT);
};
#endif
#include "stdafx.h"
#include "Figura.h"
string Figura::przedstaw_sie()
{
return nazwa;
}
Figura::Figura( int p1x, int p1y, int p2x, int p2y, int p3x, int p3y, int p4x, int p4y)
{
P1.x = p1x; P1.y = p1y; //niestety tutaj nie chce się nic przypisać do x ani y
P2.x = p2x; P2.y = p2y; // nie wiem niestety czego nie mam napisanego
P3.x = p3x; P3.y = p3y;
P4.x = p4x; P4.y = p4y;
}
double Figura::Dlugosc(POINT p1, POINT p2)
{
double dlugosc = 0;
dlugosc = sqrt(pow((double)(p1.x+p2.x), 2)+pow((double)(p1.y+p2.y), 2));
return dlugosc;
}
Wiem że x i y są protected, ale to chyba przecież powinno mi umożliwić zamianę? Na a i b niestety nie działa. Jak przypisać te zmienne do punktów tak, aby x i y pozostały private lub protected? Z góry dziękuję za pomoc.
PS. Jest może w C++ jakaś gotowa klasa punkt? Jak jej użyć?