我不知道如何调用带有引用的函数:(这是一个我知道的愚蠢的菜鸟问题。
标题是我们称之为ref.h
的函数是:
virtual int funcName (Bike &biker, BikeArray &bikearray, int x, int y .... )
在ref.h
内,还有另一个名为Bike.h
的标头。
如何从我的funcName
致电main.cpp
(事实上,我包括Bike.h
和ref.h
我在我的程序中调用了来自ref.h
的其他函数,但是其他函数没有引用Bike,只是变量......我如何声明所有内容?
到目前为止我所拥有的:
ref *ref;
Bike bike;
BikeArray bikearray;
int x, y;
ref = ref::createinstace(configFile);
ref->funcName(bike, bikearray, x,y);
ref-> funcName应该根据我传递的configFile返回结果。我之前用ref.h中的另一个函数做过这个,但是这个函数只有int和double ...没有自行车的对象......
...我得到错误“没有匹配的函数用于调用ref :: funcName(Bike&,BikeArray&,int&,int&)
抱歉,我知道这是一个新手问题!
答案 0 :(得分:1)
每个引用都传递对象,就像每个副本传递一样:
someObj.funcName(myBiker, myBikeArray, 42, ...);
请注意,如果函数对非const
引用采用参数,则表示该函数可能 更改 。 (有关详细信息,请参阅here。)
此外,您不能将rvalues(临时对象)作为非const
参数传递。这意味着,如果你有一个返回骑车人的功能:
Biker getBikerByNumber(int num);
你不能将它用作funcName
的参数:
someObj.funcName(getBikerByNumber(42), myBikeArray, 42, ...); // won't compile
因为rvalues不绑定到非const
引用。它们确实绑定到const
引用(以及下一个C ++标准引入并已由某些编译器实现的rvalue引用)。
答案 1 :(得分:0)
无论其参数是通过值传递还是通过引用传递,都以相同的方式调用函数。
Bike foo;
BikeArray bar;
funcName(foo, bar);
答案 2 :(得分:0)
传递值不是指针。
Bike biker;
funcName(biker, ...);
答案 3 :(得分:0)
funcName是虚拟的,因此必须是类成员函数。因此,您需要有一个引用或指向它最初成员的类。
自行车被向前宣布已足够,但推测Bike.h包含了Bike的类定义。 BikeArray可能是类或typedef,例如
typedef std::vector<Bike> BikeArray;
要调用funcName,您可以使用它来调用它。或 - &gt;在你的类引用或指针上,然后使用Bike的实例和BikeArray的实例,以及它需要的任何其他参数。