【发布时间】:2020-08-29 01:27:55
【问题描述】:
给定这个带有私有状态变量的结构:
struct Calibrate
{
private:
Stitcher stitcher_obj_;
}
这是拼接器对象(构造函数为空):
Stitcher::Stitcher(const std::vector<cv::Mat> &src_images){}
当调用Calibrate 时,我收到此错误:
default constructor of 'Calibrate' is implicitly deleted because field 'stitcher_obj_' has no default constructor
Stitcher stitcher_obj_
^
感谢您提供有关如何解决此问题的任何建议!
【问题讨论】:
-
为
Stitcher提供一个默认构造函数。 -
@cigien 我确实有
Stitcher的构造函数,我对措辞感到困惑? -
默认构造函数是不接受任何参数的构造函数,而不是“空构造函数”(将您的描述用于具有不执行任何操作的主体的构造函数)。通过提供接受参数的构造函数,您要求编译器默认不生成默认构造函数。如果您需要默认构造函数,则需要定义一个或强制编译器定义一个(例如,从 C++11 开始,在
Stitcher中有一个Stitcher() = default)。
标签: c++ oop object constructor