I wrote some code that produces this:
Code:
1>c:\users\comp sci\documents\visual studio 2010\projects\predatorpreysimulation\predatorpreysimulation\world.h(25): error C2665: 'std::vector<_Ty>::vector' : none of the 7 overloads could convert all the argument types
1> with
1> [
1> _Ty=World::UniqueOrganism
1> ]
1> c:\microsoft visual studio 10.0\vc\include\vector(521): could be 'std::vector<_Ty>::vector(unsigned int,const _Ty &)'
1> with
1> [
1> _Ty=World::UniqueOrganism
1> ]
1> while trying to match the argument list '(int, nullptr)'
1>
1>Build FAILED.
The code producing such errors is:
Code:
class World{
struct UniqueOrganism{
std::unique_ptr<Organism> unique_organism;
UniqueOrganism() {}
// Move constructor
UniqueOrganism(UniqueOrganism &object){
unique_organism = std::move(object.unique_organism);
}
};
std::vector<std::vector<UniqueOrganism>> cell_grid;
public:
World() {
cell_grid = std::vector<std::vector<UniqueOrganism>> (20, std::vector<UniqueOrganism>(20, nullptr));
}
~World() {}
};
I know there is no copy/assign with unique_ptr. There is also no copy constructor with unique_ptr and that unique_ptr owns the object without reference counting. What is lacking in my understanding?
What I am uncertain of is unique_ptr can reside within a container. Because copy/assign is not supported, I chose to embed the unique_ptr inside a class