When I call a method that takes a reference, g++ complains that I’m not passing a reference. I thought that the caller didn’t have to do anything different for PBR. Here’s the offending code:
//method definition
void addVertexInfo(VertexInfo &vi){vertexInstances.push_back(vi);}
//method call:
sharedVertices[index]->addVertexInfo(VertexInfo(n1index, n2index));
And here’s the error:
GLUtils/GLMesh.cpp: In member function 'void GLMesh::addPoly(GLIndexedPoly&)':
GLUtils/GLMesh.cpp:110: error: no matching function for call to 'SharedVertexInfo::addVertexInfo(VertexInfo)'
GLUtils/GLMesh.h:93: note: candidates are: void SharedVertexInfo::addVertexInfo(VertexInfo&)
VertexInfo(n1index, n2index)creates a temporaryVertexInfoobject. A temporary cannot be bound to a non-const reference.Modifying your
addVertexInfo()function to take a const reference would fix this problem:In general, if a function does not modify an argument that it takes by reference, it should take a const reference.