Od pewnego czasu zmagam się z następującym problemem:
void Game::Update() //w klasie Game znajduje się funkcja Update zawierająca pętlę gry
//korzystam z SFML
{
std::vector<Object> opps;
Object tr1(/*wysłanie do konstruktora odpowiednich wartości*/);
opps.push_back(tr1); //linijka wywołująca błąd, próbowałem również emplace_back()
while (app.isOpen())
{
sf::Event evnt;
while (app.pollEvent(evnt))
{
//...
}
//tutaj następuje wywołanie jakichś funkcji na rzecz innego obiektu
//w tym miejscu wywoływana jest funkcja Move() na rzecz wszystkich obiektów klasy
//Object znajdujących się w "opps":
for (int i = 0; i < opps.size(); i++)
{
opps[i].Move();
}
app.clear();
//wyświetlenie na ekran(Object dziedziczy z sf::Drawable):
for (int i = 0; i < opps.size(); i++)
{
app.draw(opps[i]);
}
app.display();
//jeżeli spełniony zostanie odpowiedni warunek, to nastąpi
//wylosowanie lub określenie odpowiednich wartości, które następnie
//zostaną przesłane przy definiowaniu kolejnego obiektu klasy Object
//obiekt ten usiłuję dodać do kontenera:
Object x(/*wysłanie wyżej wspomnianych wartości*/);
opps.push_back(x);
}
}
Po tym wszystkim otrzymuję błąd o kodzie: C2280, o treści:
'Object::Object(const Object &)': attempting to reference a deleted function'
Próbowałem szukać rozwiązania w Internecie, ale wiele tematów dotyczy użycia unique::ptr.
Czy ktoś mógłby w przystępny sposób wytłumaczyć:
- gdzie tkwi błąd?
- czym różni się dodawanie obiektów własnych klas do kontenera od dodawania obiektów typów wbudowanych?
Bardzo proszę również o możliwe rozwiązania, wcześniej próbowałem zrobić kontener wskaźników i program się
kompilował, ale błąd pojawiał się w momencie dodawania drugiego elementu do std::vector.