【发布时间】:2021-08-07 17:52:33
【问题描述】:
我正在尝试创建一个计算直线运动的基本物理模拟。 当我尝试将构造函数添加到 Body 结构时,它显示以下错误:
没有匹配的函数调用'Vector::Vector()'
代码如下:
struct Point{
int x,y;
Point(int _x, int _y) : x(_x), y(_y)
{
}
};
struct Vector{
int value, direction;
Vector(int _value, int _direction) : value(_value), direction(_direction)
{
}
};
struct Body{
std::string ID;
int m;
Vector v, a;
Point pos;
Body(std::string _ID = "NONE", int _m = 0, Point _pos = Point(0, 0))
{
ID = _ID;
m = _m;
pos = _pos;
v = Vector(0, 0);
a = Vector(0, 0);
}
};
我不知道为什么会这样。 我刚刚发现如果我在 v 和 a 之前声明 pos,错误会用“Point”替换“Vector”。此外,构造函数可以完美地工作,而无需声明任何这些变量。 这可能是一个非常愚蠢的忽视。帮助。
【问题讨论】:
-
你的
Body构造函数也应该使用成员初始化列表语法,就像你的Point和Vector一样。这将修复错误 -
如果这是一个有效的用例,你也可以给 Vector 一个默认构造函数
标签: c++ struct constructor physics