这个问题有很多相当复杂的背景,需要很长时间来解释......所以我大大简化并省略了很多细节......
基本上我有一个函数,我有一个类的实例。 Class类型是Mat,实例是“Fred”。因此,我可以使用点(。)运算符(即Fred.data)访问Fred类中的数据。我现在想要调用第二个函数,我希望对Fred进行一些处理。如果我将指针传递给Fred,则第二个函数必须使用箭头操作符( - >)访问其数据。
我想知道的是,我是否可以以不同的方式传递Fred,以便function2中的代码可以使用Jim.data访问数据?
void function1()
{
// some code here involving Fred
int x = Fred.data;
function2(&Fred)
}
void function2(Mat *Jim)
{
int y = Jim->data;
}
答案 0 :(得分:4)
通过引用传递
void function2(Mat& Jim)
即使直接访问数据成员有点代码味道。
答案 1 :(得分:2)
通过引用而不是指针传递:
void function1()
{
// some code here involving Fred
int x = Fred.data;
function2(Fred)
}
void function2(Mat &Jim)
{
int y = Jim.data;
}
Reference本质上是一个指向最多一个对象的常量指针,而指针可用于遍历对象数组。
如果你所做的只是调用方法和访问字段,那么简单地将*
更改为&
和->
到.
就足够了。请注意,虽然对象可能会超载->
操作,如果您忘记替换->
的所有出现,可能会导致一些麻烦。
答案 2 :(得分:0)
void function1()
{
// some code here involving Fred
int x = Fred.data;
function2(Fred)
}
void function2(Mat& Jim)
{
int y = Jim.data;
}