[c++]Tworzenie kilku obiektów z liczbą losową w konstruktorze

0

Tworze macierz o wymiarach podanych przez użytkownika, i obiekty klasy pionek (liczba obiektów podaje uzytkownik). Każdy pionek ma pola X, Y określające jego położenie na macierzy.

Położenie ma być losowe - u mojego pionka wygląda to tak:

 class pionek{
public:
	int* x;
	int* y;
	pionek(int xplanszy, int yplanszy) //xplanszy, yplanszy to szerokosci i wysokosc stworzonej macierzy
	{
		srand ( time(NULL) );
		x= new int((rand() % xplanszy)+1);
		y= new int((rand() % yplanszy)+1);
	}
//destruktor, metody itp.
};

Chce aby wszystkie stworzone pionki były w vectorze - tworze vector wskaźników na obiekty klasy pionek i wrzucam do niego podaną przez użytkownika liczbę pionków:

 vector< pionek*> vectorPionkow;
	for(int i=0; i<liczbaPionkow; i++)
	{		
		vectorPionkow.push_back(new pionek(xplanszy, yplanszy));
//Od razu sprawdzam wylosowane wspolrzedne metodami je wyświetlajacymi z klasy pionek
		cout << i+1 << ".Pozycja pionka " << vectorPionkow[i] -> pozycjax() << " " << vectorPionkow[i] -> pozycjay() << endl;
	}

I tu pojawia mi się problem, tworzą mi się pionki, mają losowe współrzędne, jednak te same np.:

1.Pozycja pionka 3 1
2.Pozycja pionka 3 1
3.Pozycja pionka 3 1

Ktoś coś dopomoże? :)

1

inicjalizację srand używamy raz na początku programu, później tylko rand

ty inicjalizujesz to za każdym razem i za każdym razem generujesz z tego dwa pierwsze randy, jeśli robisz to w ciagu tej samej sekundy, to inicjalizacja jest taka sama i randy też

0
int* x;
x= new int((rand() % xplanszy)+1);

Po co tworzysz inta dynamicznie?

int x = (rand() % xplanszy) + 1;
0

tzn to co podałeś powinienem do konstruktora wrzucić?

Jak tak robie to program mi sie kompiluje, ale sie wiesze przy tworzeniu obiektu.

(dzięki notexists za odpowiedź)


aa już wiem o co chodzi, po prostu głupi błąd z początku programowania, na siłe chciałem destruktor dodać

0

proszę :)

int x = (rand() % xplanszy) + 1;
</quote>

jeśli wkleisz to w konstruktorze, to x będzie istnieć tylko w czasie wykonywania konstruktora i później zniknie

zostawiłbym taki podział jak masz, ale bez dynamicznego, czyli deklaracja atrybutu:

 int x;

i w konstruktorze:

 x = (rand() % xplanszy) + 1;

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