创建派生类构造函数时出错
Error when when creating Derived Class constructor
我正在制作一个游戏(在OpenGL/SDL中),其中有从Entity类派生的一般实体和特定对象。我有一个这样的项目符号派生类。下面是实体类和项目符号类的定义:
class Entity {
public:
Entity(ShaderProgram program): program(program){}
void Draw() {
}
void Update(float elapsed) {
// move stuff and check for collisions
}
void Render() {
// for all game elements
// setup transforms, render sprites
}
float x;
float y;
float rotation;
int textureID;
float width;
float height;
float speed;
float direction_x;
float direction_y;
ShaderProgram program;
GLuint spriteSheetTexture = LoadTexture("sheet.png");
SheetSprite mySprite = SheetSprite(spriteSheetTexture, 241.0f / 1024.0f, 941.0f / 1024.0f, 99.0f / 1024.0f, 75.0f /1024.0f, 0.2, program);
};
class Bullet : public Entity {
public:
Bullet(ShaderProgram program, float angle, float timeAlive) : program(program), angle(angle), timeAlive(timeAlive){}
float angle;
float timeAlive;
ShaderProgram program;
};
由于派生类不继承构造函数,因此我为 bullet 类创建了另一个构造函数(初始化与基类相同的程序)。出于某种原因,我收到预编译错误:在派生类的初始化列表之后No default constructor exists for class "Entity"
在打开大括号上。
可能只是因为我看代码太久了,但我相当确定我已经正确初始化了派生类中的所有内容,并且没有使用任何默认构造函数。可能导致错误的原因是什么?
除非显式为基类构造函数提供参数,否则将使用基类的默认构造函数。 你想要这个:
Bullet(ShaderProgram program, float angle, float timeAlive) :
Entity(program), angle(angle), timeAlive(timeAlive) {}
您可能不希望派生类program
,因为它是从 Entity 继承的。
相关文章:
- 使用dynamic_cast和构造函数时出错
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 使用根/C++时出错:没有匹配的构造函数来初始化'TTree'
- 使用类的构造函数时出错
- 在 c++ 的构造函数中分配对象向量时出错
- 调用 cv::stereoBM 构造函数时出错
- 尝试从 C++ 中的构造函数从类继承时出错
- 尝试使用构造函数创建对象时出错
- 类中私有结构的构造函数出错
- 在构造函数中分配数组时出错
- 不可复制的对象、映射和shared_ptr:复制构造函数中出错
- 我的类默认构造函数出错
- 在另一个模板类构造函数中使用typdef模板时出错
- C++从构造函数返回值时出错
- 尝试在<int>构造函数中使用 vector 启动类时出错
- 在c++中初始化构造函数中的静态成员变量时出错
- 具有std::原子成员变量的类的复制构造函数/赋值运算符出错
- 使用复制构造函数时出错
- C2057构造函数初始化列表中的常量值定义出错
- 在模板类中使用 r 和 l 值构造函数时出错