Yem*_*lat 0 c++ constructor pass-by-reference
我知道这个问题很多,但我来自Java,而且我很长时间没有做过任何C/C++.
你能否提醒我如何在C++中正确地将对象传递给另一个对象的构造函数?
例如,我需要将一个新的Light对象传递给Button构造函数:
// LED Light
class Light {
int pin;
public:
Light(int p) {
pin = p;
}
};
// BUTTON
class Button {
Light ledLight;
public:
Button(Light l) {
ledLight = l;
}
};
Light my_led(0);
Button my_button(my_led);
Run Code Online (Sandbox Code Playgroud)
这就是我在类似Java的方面做的事情.但是,这会产生以下错误:
:: In constructor ‘Button::Button(Light)’:
:: 16:19: error: no matching function for call to ‘Light::Light()’
:: 16:19: note: candidates are:
:: 6:3: note: Light::Light(int)
:: 6:3: note: candidate expects 1 argument, 0 provided
:: 2:7: note: Light::Light(const Light&)
:: 2:7: note: candidate expects 1 argument, 0 provided
Run Code Online (Sandbox Code Playgroud)
对象是通过引用传递还是在创建新Button时尝试创建新对象?
或者我是否需要将Light声明为Button的构造函数中的指针?
任何帮助都是非常有用的!
程序尝试启动ledLight使用默认构造函数然后分配l给ledLight.编译器会给你一个错误,因为没有默认的构造函数Light.试试这个:
Button(Light l): ledLight(l) { }
Run Code Online (Sandbox Code Playgroud)