Klasa Vector - usunięcie wskazanego pola z tablicy wypełnionej własną klasą

0

Stworzyłem sobie dwie klasy :

class kon{
string w;
string t;
double c;
};

class Tablica
{
vector <kon> mag;

public:
Tablica usun(unsigned m);
};

Tablica Tablica::usun(unsigned m)
{vector<kon>::iterator it = mag.begin() + m;
mag.erase(it);
return mag;
}

Poradziłem sobie przeciążeniem operatorów żeby dodawać do magazynu i wyświetlać ale zaciąłem się na usunięciu wybranego przez użytkownika pola w tablicy

int main()
{Tablica Tab;
Tab.usun(3) // - no właśnie nie działa

return 0;
}

komunikat:

|28|error: conversion from 'std::vector<kon, std::allocator<kon> >' to non-scalar type 'Tablica' requested|

Prośba o pomoc.

1

Tablica usun(unsigned m);

return mag;

To wygląda jakbyś chciał zwrócić nowy obiekt typu Tablica bez usuniętego elementu. Ale w takim razie nie powinieneś modyfikować obecnej. Prawdopodobnie jednak chciałeś po prostu zmodyfikować obecną, ale w takim razie powinieneś w funkcji usuń nic nie zwracać.

0

Dzięki, pomogło :). Wydawało mi się że jak po usunięciu vectror przepisze sobie elementy po nowemu to muszę ją zwrócić żeby zauważyć zmiany. Ale jak widać działa i bez tego :)
Thx.

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