如何通过引用
How to pass by reference?
>我在头文件 Class2.hpp 中有一个形式的函数:
class Class2{
void Test::func(std:: string & text, Class1::enum_var var1, unsigned var2, unsigned &var3);};
我有表格的 1 类:
class Class1{
public:
/// Different literal types
enum enum_var {
enum_var1, enum_var2, enum_var3
}; };
我在 Class2 中定义了上述函数.cpp为
void Test::func(std:: string & text, Class1::enum_var var1, unsigned var2, unsigned &var3){
cout<<"inside the function";
}
现在我将上述函数调用为:
Class2 clsObj;
std::string text="abc";
int var3=0;
clsObj.func( text, Class1::enum_var1, 0, &var3);
但是,当我运行该程序时,它会给我以下错误:
error: no matching function for call to ‘Class2::func(std::string*, Class1::enum_var1, int, int*)’
note: candidate is:
void Class2::func(std::string&, Type::ID, unsigned int, unsigned int&)
note: no known conversion for argument 4 from ‘unsigned int*’ to ‘unsigned int&’
我不知道如何摆脱错误。.有人可以好心帮忙吗?
另外,我希望 var3 中的更改能够反映回来......因此,除了返回或通过参考之外,我别无选择。当我通过引用传递 var3 时,它会给我错误。
clsObj.func(& text, Class1::enum_var1, 0 &var3);
应该是:
clsObj.func(text, Class1::enum_var1, 0, var3);
引用是被引用对象的别名,引用者只能通过引用名称访问。
通过引用传递在事物的调用端没有特殊的语法,只有签名/定义具有特殊的&
。用:
clsObj.func(text, Class1::enum_var1, 0, var3);
&text
获取 text
变量(类型 std::string*
)的地址。当您尝试将其传递给函数时,它不需要指针,而这正是错误消息试图表达的内容。
相关文章:
- Ctypes wstring通过引用传递
- 为什么我可以通过引用修改常量返回
- 在 const 函数中通过引用和指针返回之间的区别
- 智能指针作为无序映射键,并通过引用进行比较
- 如何通过引用返回对象
- 通过常量引用传递参数的矩阵模板类
- 通过引用传递-为什么要调用这个析构函数
- 何时应通过引用传递矢量参数而不是按值传递矢量参数?
- 如何传递带有通过引用传递的结构参数的函数?
- 我如何通过引用将 c++ 字符串分配给另一个字符串
- 为什么我在函数中使用引用并通过引用返回它仍然有效?
- 如何从常量引用或通过转发模板临时构造对象
- 包含仅移动类型的类的构造函数应通过引用还是通过右值引用接收仅移动类型?
- 在C++中,通过引用和通过值将向量传递到函数中
- *val 和 &val 在 C++ 中通过引用传递时有何不同
- 迷失在通过引用、通过值传递的参数中
- 通过引用与通过值传递指向函数的指针,以及在指针链上使用delete
- 在接收到r值引用后通过引用传递
- 为什么引用在通过指针完成时会中断
- 复制赋值运算符应该通过常量引用还是通过值传递