我有这个非常简单的课程
class myclass {
public:
int id;
double x, y, z;
myclass() = default; // If I omit this line I get an error
myclass(int ID, double X, double Y, double Z): id(ID), x(X), y(Y), z(Z) {};
};
如果我省略了该行myclass() = default;
然后尝试创建一个对象
#include <vector>
using namespace std;
int main() {
int ID = 0;
double X = 1.0, Y = 2.0, Z = 3.0;
vector<myclass> a_vector(10);
myclass an_object(ID,X,Y,Z);
return 0;
}
我收到一个错误no matching function for call to ‘myclass::myclass()
.
为什么会出现这种情况?什么时候强制指定默认不带参数的构造函数?
这可能是一个非常简单的问题,但是关于构造函数的其他问题似乎针对构造函数的非常具体的问题,所以我认为这可能是值得的。