C++, användning av std::partition
Jag har ett problem med användning av std::partition. Det är så att jag har en klass Character som jag vill spara i en vector. Detta har jag gjort med hjälp
std::vector<Character> character_list{};
sedan laddar jag in mina character-objekt.
for(int i = 0; i < number_of_players; i++)
{
character_list.emplace_back(Character{our_matrix, i + 1});
}
Det är nu jag vill partitionera vektorn med anseende om det är vid liv eller inte. Själva kollen görs i lambda-uttrycket.
std::vector<Character>::iterator bound;
bound = std::partition(character_list.begin(), character_list.end()
, [](Character curr) {return curr.get_life() > 0;});
Dock verkar inte partitioneringen fungera och jag får förljande fel från kompilatorn
g++ -std=c++14 -Wpedantic -Wextra -Werror -Wall -c Game.cc -DSFML_STATIC -I SFML\include -L SFML\lib -lsfml-graphics-s -lsfml-window-s -lsfml-system-s -lopengl32 -lwinmm -lgdi32 -lfreetype -ljpeg
C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/bits/move.h: In instantiation of 'void std::swap(_Tp&, _Tp&) [with _Tp="Character"]':
C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/bits/stl_algobase.h:148:22: required from 'void std::iter_swap(_ForwardIterator1, _ForwardIterator2) [with _ForwardIterator1 = __gnu_cxx::__normal_iterator<Character*, std::vector<Character> >; _ForwardIterator2 = __gnu_cxx::__normal_iterator<Character*, std::vector<Character> >]'
C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/bits/stl_algo.h:1507:34: required from '_BidirectionalIterator std::__partition(_BidirectionalIterator, _BidirectionalIterator, _Predicate, std::bidirectional_iterator_tag) [with _BidirectionalIterator = __gnu_cxx::__normal_iterator<Character*, std::vector<Character> >; _Predicate = Game::update()::<lambda(const Character&)>]'
C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/bits/stl_algo.h:4508:43: required from '_BIter std::partition(_BIter, _BIter, _Predicate) [with _BIter = __gnu_cxx::__normal_iterator<Character*, std::vector<Character> >; _Predicate = Game::update()::<lambda(const Character&)>]'
Game.cc:45:74: required from here
C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/bits/move.h:176:11: error: use of deleted function 'Character& Character::operator=(const Character&)'
__a = _GLIBCXX_MOVE(__b);
^
In file included from Game.cc:2:0:
Character.h:26:7: note: 'Character& Character::operator=(const Character&)' is implicitly deleted because the default definition would be ill-formed:
class Character
^
Character.h:26:7: error: non-static const member 'const int Character::step', can't use default assignment operator
In file included from C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/bits/stl_pair.h:59:0,
from C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/bits/stl_algobase.h:64,
from C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/bits/char_traits.h:39,
from C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/ios:40,
from C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/ostream:38,
from SFML\include/SFML/System/Err.hpp:32,
from SFML\include/SFML/System.hpp:34,
from SFML\include/SFML/Window.hpp:32,
from SFML\include/SFML/Graphics.hpp:32,
from Matrix_Map.h:4,
from Game.cc:1:
C:/Program Files (x86)/CodeBlocks/MinGW/lib/gcc/mingw32/4.9.2/include/c++/bits/move.h:177:11: error: use of deleted function 'Character& Character::operator=(const Character&)'
__b = _GLIBCXX_MOVE(__tmp);
^
Makefile:58: recipe for target 'Game.o' failed
mingw32-make: *** [Game.o] Error 1
C:\Users\MrC\Downloads\christoffer-4-master-6cf3aba574c6e82f917413d01922f578c3cd62d8>
Nu undrar jag om något geni kan förklara vad jag gör fel. Behöver ni bättre förklaring/kod är det bara att säga till, den då projektet är ganska stort kan inte all kod presenteras här.