【发布时间】:2015-12-17 21:18:02
【问题描述】:
我对 Java 有深入的了解,但我正在尝试学习 c++ 来制作游戏,因为我认为 c++ 是一种更好的语言。但是我在使用 c++ 时遇到了一些问题。
#ifndef RENDER_H
#define RENDER_H
#include "shader.h"
class Render
{
public:
Render();
protected:
private:
Shader shader;
};
#endif
Shader 是一个带有字符串构造函数的类,只是在这个类中声明它会导致错误。如果我删除 Shader 的构造函数,我不会收到错误消息。
Error: render.cpp:3:16: error: no matching function for call to 'Shader::Shader()'
class Shader
{
public:
Shader(const std::string& fileName);
void Bind();
void Update(const Transform& transform, const Camera& camera);
virtual ~Shader();
【问题讨论】:
-
您应该显示
Shader的代码(至少它是构造逻辑和Render构造函数的实现。听起来您可能没有默认构造函数,因此您需要1)添加默认构造函数或2)正确使用Render构造函数中的initiailzer列表来实例化Shader对象。 -
请发帖minimal reproducible example。说出您遇到的错误也很有用。
-
@AlanStokes 它指出错误是对
Shader类的缺失默认构造函数的调用。 -
错误出现在您未向我们展示的函数中。见minimal reproducible example。
-
不要以使已发布答案无效的方式更改问题。
标签: c++