【发布时间】:2016-01-16 05:02:03
【问题描述】:
我使用 c++ 和 opengl 有一段时间了,但从来没有真正沉迷于课堂。我正在尝试为我的体素游戏创建一个 Block 类,但是编译器给了我错误
block.h:13:7: note: candidate expects 1 argument, 0 provided
第 13 行是创建类的行。这是块头文件:
#ifndef BLOCK_H
#define BLOCK_H
#include <GL/glew.h>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include "Shader.h"
#include "Camera.h"
using namespace glm;
class Block{
public:
void render(Camera cam);
glm::vec3 position;
Block(glm::vec3 position);
private:
void createMesh();
GLuint VAO, VBO;
Shader shader;
};
#endif
完整的错误:
world.cpp: In constructor ‘World::World(GLFWwindow*)’:
world.cpp:3:32: error: no matching function for call to ‘Block::Block()’
World::World(GLFWwindow* window)
^
world.cpp:3:32: note: candidates are:
In file included from world.h:9:0,
from world.cpp:1:
block.h:17:2: note: Block::Block(glm::vec3)
Block(glm::vec3 position);
^
block.h:17:2: note: candidate expects 1 argument, 0 provided
block.h:13:7: note: Block::Block(const Block&)
class Block{
^
block.h:13:7: note: candidate expects 1 argument, 0 provided
我还收到许多其他类似的编译器错误,输出如下:
http://pastie.org/10691691
---编辑--- 好的,我已经将错误缩短了一点。 这是更新的错误日志:http://pastie.org/10691707
【问题讨论】:
-
您还应该附加调用代码/标头(shader.h 等)。从错误看来,您的构造函数签名与您在代码中创建它的方式不匹配。也许您可以看到以下内容:-stackoverflow.com/questions/12733888/…