У меня есть класс "Object"
Object::Object(Transform transform, Mesh mesh, Shader shader)
{
this->transform = transform;
this->mesh = mesh;
this->shader = shader;
}
с 3-мя переменными-членами Transform, Me sh и Shader (в случае необходимости я работаю с OpenGL-GLEW и GLFW)
Приведенный выше конструктор возвращает сообщение об ошибке «конструктор по умолчанию для класса Me не существует sh».
Я определил конструктор для меня sh, но моя путаница заключается в том, что я пытаюсь назначить переданный объект переменной Me sh в конструктор, когда я создаю экземпляр объекта.
По сути, я хочу что-то вроде
Transform transform() //has a default constructor requiring no parameters
Mesh mesh(parameters)
Shader shader()
Object myObject(transform, mesh, shader);
в качестве обобщенного c примера.
В случае, если важен конструктор Me sh:
Mesh::Mesh(Vertex* verts, unsigned int numVerts)
{
/*Vertex vertices[] = { Vertex(glm::vec3(-.5,-.5,0)),
Vertex(glm::vec3(0,.5,0)),
Vertex(glm::vec3(.5,-.5,0)) };*/
//vertices = new Vertex[numVerts]{ verts };
m_drawCount = numVerts;
glGenVertexArrays(1, &m_vertexArrayObject);
glBindVertexArray(m_vertexArrayObject);
glGenBuffers(NUM_BUFFERS, m_vertexArrayBuffers);
glBindBuffer(GL_ARRAY_BUFFER, m_vertexArrayBuffers[position_VB]);
glBufferData(GL_ARRAY_BUFFER, numVerts * sizeof(verts[0]), verts, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glBindVertexArray(0);
}
tl; dr Я пришел из C# фона, так что, возможно, я запутался, но я ' Я не уверен, зачем мне нужен конструктор по умолчанию для объекта, когда я передаю объект в качестве параметра, когда тот же объект можно создать с помощью конструктора, который я определил в другом месте моего кода.