我正在尝试创建一个类型为Vertex
的数组,然后初始化函数中的每个成员。 Vertex
类在构造函数中使用Vector3f:
Vertex::Vertex(const Vector3f& position) : position(position) { }
在头文件中,我声明了这样的数组:
class Application
{
//...
private:
Vertex data[3];
//...
};
并在源文件中,在函数中我尝试这个:
data[0] = Vertex(Vector3f(0, 0, 0));
data[1] = Vertex(Vector3f(0, 0, 0));
data[2] = Vertex(Vector3f(0, 0, 0));
但是当我尝试编译时,我得到了这个错误:
/home/mert/dev/C++/C++3D/src/Application.h: In constructor ‘Application::Application()’:
/home/mert/dev/C++/C++3D/src/Application.h:31:19: error: no matching function for call to ‘Vertex::Vertex()’
Application() { }
^
我尝试将数组声明为顶点指针,然后执行data = new Vertex[3];
,但结果是一样的。我该怎么做才能解决这个问题?
答案 0 :(得分:1)
Vertex类没有默认构造函数。 声明对象数组时,每个数组条目都是通过调用默认构造函数构建的。 你可以通过添加一个默认的construcor或通过声明一个Vertex指针数组然后在实例化对象时调用正确的构造函数来解决这个问题。