Klasa punkt i jej późniejsze wykorzystanie

0

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ć?

0

Można do tego użyć pair<T1,T2>. Nie możesz zmienić bo to są, jak sam stwierdziłeś pola protected, a one mogą być zmieniane tylko wewnątrz klasy lub przyjaciół.

0
Figura::Figura( int p1x, int p1y, int p2x, int p2y, int p3x, int p3y, int p4x, int p4y):P1(p1x,p1y),P2(p2x,p2y),P3(p3x,p3y),P4(p4x,p4y)
 {
 }
0

@up

Działa:)

BTW
Jako, że będę używał tego programu do rysowania w MFC w okienku, czy nie lepiej byłoby mi użyć Cpoint zamiast definiować punkt samemu?

1 użytkowników online, w tym zalogowanych: 0, gości: 1