我正在尝试创建一个名为 luminary 的对象。该对象由温度计对象,内存对象, Led 对象组成。最后三个班级完全分开。但是当我尝试将所有内容粘合在一起时,我得到了这些信息:
luminary.cpp:11:112:错误:没有用于调用'Thermometer :: Thermometer()'的匹配函数 luminary.cpp:11:112:错误:没有匹配函数来调用'Memory :: Memory()' luminary.cpp:11:112:错误:没有匹配函数来调用'Led :: Led()'
杰出班级的头文件代码:
class Luminary{
public:
//Constructor
Luminary(Led led,Thermometer thermometer,Memory memory);
//Atributes
Led _led;
Thermometer _thermometer;
Memory _memory;
}
cpp文件代码:
#include "luminary.h"
#include "Led.h"
#include "Thermometer.h"
#include "Memory.h"
//Constructor
Luminary::Luminary(Led led,Thermometer thermometer,Memory memory){
_memory = memory;
_thermometer = thermometer;
_led = led;
}
为什么我会收到这些消息?
答案 0 :(得分:4)
根据您的来源,Led
,Thermometer
,Memory
必须是默认的可构造的,意味着它们应该有默认的构造函数,但它们没有。
您可以在此处使用member initializer list:
Luminary::Luminary(Led led,Thermometer thermometer,Memory memory)
: _led(led), _thermometer(thermometer), _memory(memory) {}
Here讨论了为什么在moust情况下,你应该使用初始化列表而不是赋值。