wywolanie metody ze struktury na obiekcie z vectora

0

mam strukturę, składającą się z 3 parametrów, vectora i jednej metody add, która dodaje wartość do wektora:

struct Shape {
	int line_width, line_color, fill_color;
	vector<Point> pts;
	Shape(int lw, int lc, int fc)
	: line_width(lw), line_color(lc), fill_color(fc) {}
	void add(Point p) { pts.push_back(p); }
	} 

stworzylem vector wskazań na takie struktury:

 vector <Shape*> ksztalty;

zeby stworzyc nowy obiekt typu Shape pisze:

ksztalty.push_back(new Shape(0, FL_BLACK, 0)); 

i teraz chcialbym dla dowolnego (i-tego) obiektu z vectora Shape wywołać metodę add:

 ksztalty[i].add(Point(10,10))

ale cos w tej linijce jest nie tak :(

1
ksztalty[i]->add(Point(10,10))

Swoją drogą zdajesz sobie sprawę z tego, że masz wyciek pamięci? Wektor trzyma gołe wskaźniki na pamięć alokowaną przez new i potem nic tej pamięci nie sprząta. Dlaczego nie robisz

vector<Shape> ksztalty;

wtedy nawet pierwotny błąd zniknie.

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