对象组合C ++:没有匹配的调用函数

时间:2015-07-20 03:18:38

标签: c++ class composition

我正在尝试创建一个名为 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;

}

为什么我会收到这些消息?

1 个答案:

答案 0 :(得分:4)

根据您的来源,LedThermometerMemory必须是默认的可构造的,意味着它们应该有默认的构造函数,但它们没有。

您可以在此处使用member initializer list

Luminary::Luminary(Led led,Thermometer thermometer,Memory memory) 
    : _led(led), _thermometer(thermometer), _memory(memory) {}

Here讨论了为什么在moust情况下,你应该使用初始化列表而不是赋值。