引用变量作为c++中的函数参数时出现问题
Problem with reference variable as function parameter in c++
我已经将一个类声明为:
class Actuator
{
public :
enum class Action
{
/*my enum member*/
};
private:
/* my data member*/
public :
Actuator(uint8_t number);
Actuator(uint8_t number, String& relay_config_string, String& led_config_string);
Actuator(uint8_t number, const char* relay_config_string, const char* led_config_string);
void set_relay_config (String& relay_config_string);
void set_relay_config (const char* relay_config_string);
String get_relay_config (void);
void set_led_config (String& led_config_string);
void set_led_config (const char* led_config_sring);
String get_led_config (void);
void set_state (bool state, bool change_flag = true);
void set_state (String& state, bool change_flag = true);
void toggle (bool change_flag = true);
String get_state (void);
};
并在Actuator.cpp文件中进行了定义。
在main.cpp文件中,我写道:
int main ()
{
Actuator ac;
ac.set_state(app_cmd.get_command_parameter().substring(2), false);
ac.set_relay_config(app_cmd.get_command_parameter().substring(2));
return 0;
}
(ac.set_state(app_cmd.get_command_parameter((.substring(2(,false(;(可以,但在(ac.set_lay_config(app_cmd.get_command_parameter((.substring(2((;(行i有以下错误:
没有重载函数的实例"my_program::执行器::set_relay_config"匹配参数列表--参数类型为:(String(--对象类型为:my_program::ActuatorC/C++(304(
编辑:当我将void set_relay_config (String& relay_config_string);
更改为void set_relay_config (String relay_config_string);
(即删除&(时,它将被解决。
您在这里做的事情:
ac.set_state(app_cmd.get_command_parameter().substring(2), false);
ac.set_relay_config(app_cmd.get_command_parameter().substring(2));
是要传递substring()
方法返回的String类型的pr值,请参阅:https://en.cppreference.com/w/cpp/language/value_category
R值不能修改,因此不能通过引用将其传递给函数。
要解决这个问题,您需要:
将其作为const引用传递-const String&:
void set_state (const String& state, bool change_flag = true);
void set_relay_config (const String& relay_config_string);
将其作为值类型传递-字符串:
void set_state (String state, bool change_flag = true);
void set_relay_config (String relay_config_string);
- C++复杂情况的比较器通过参数问题
- C++17 中的歧义错误(模板模板参数和默认参数问题)
- C 缺少模板参数问题
- C++ pcap_loop() 参数问题
- 带有指针作为参数问题的 C++ 函数
- C++ 奇怪的字符*参数问题(不兼容的类型)
- JNA 参数问题:内存访问无效
- Qt样式表和"一个参数"问题
- 默认参数问题 (c++)
- 具有可变模板的递归继承和继承参数问题
- 命令行参数问题
- OpenCV 决策树参数问题
- winapi GetProcessMemoryInfo 无效参数问题
- 参数问题?至少我认为是这样
- 构造函数参数问题C++
- c++教程参考参数问题
- c++多线程参数问题
- Clang Format多行函数声明参数问题
- 提升Python - 具有默认参数问题的重载函数
- VBA Excel DLL参数问题-第6个参数