C++ 愚蠢的C++;参考问题

C++ 愚蠢的C++;参考问题,c++,reference,C++,Reference,我不知道如何调用包含引用的函数:(我知道这是一个愚蠢的noob问题 标题是,我们称之为ref.h中有一个函数: virtual int funcName (Bike &biker, BikeArray &bikearray, int x, int y .... ) 在ref.h中有另一个标题名为Bike.h 如何从我的main.cpp调用funcName(obv.I包括Bike.h和ref.h 在我的程序中,我从ref.h调用了其他函数,但其他函数中没有对Bike的引用,只有变

我不知道如何调用包含引用的函数:(我知道这是一个愚蠢的noob问题

标题是,我们称之为
ref.h
中有一个函数:

virtual int funcName (Bike &biker, BikeArray &bikearray, int x, int y .... )
ref.h
中有另一个标题名为
Bike.h

如何从我的
main.cpp
调用
funcName
(obv.I包括
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应该根据我传递的配置文件返回结果。我之前使用ref.h中的另一个函数完成了此操作,但该函数只有int和double…没有要循环的对象

…我得到了错误“没有与call ref::funcName(Bike&,bikerray&,int&,int&)匹配的函数”


抱歉,我知道这是一个新手问题!

无论函数的参数是通过值传递还是通过引用传递,都以相同的方式调用函数

Bike foo;
BikeArray bar;
funcName(foo, bar);

无论函数的参数是通过值传递还是通过引用传递,调用函数的方式都是相同的

Bike foo;
BikeArray bar;
funcName(foo, bar);

传递值而不是指针

Bike biker;
funcName(biker, ...);

传递值而不是指针

Bike biker;
funcName(biker, ...);

funcName是虚拟的,因此必须是类成员函数。因此,您需要有一个指向它是第一个成员的类的引用或指针

对Bike进行主动声明就足够了,但Bike.h可能包含Bike的类定义。例如,bikerray可能是一个类或typedef

typedef std::vector<Bike> BikeArray;
typedef std::vector bikerray;

要调用funcName,您可以使用.or->在类引用或指针上调用它,然后使用要写入的Bike实例和BikerRay实例,以及它所需的任何其他参数。

funcName是虚拟的,因此必须是类成员函数。因此,您需要有一个指向类t的引用或指针它是first的成员

对Bike进行主动声明就足够了,但Bike.h可能包含Bike的类定义。例如,bikerray可能是一个类或typedef

typedef std::vector<Bike> BikeArray;
typedef std::vector bikerray;

要调用funcName,您可以在类引用或指针上使用.or->调用它,然后使用要写入的Bike实例和bikerray实例,以及它所需的任何其他参数。

每个引用传递对象就像每个副本传递对象一样:

someObj.funcName(myBiker, myBikeArray, 42, ...);
请注意,如果函数对每个非
const
引用使用参数,这表示函数可能更改它们。(有关详细信息,请参阅。)

此外,不能将右值(临时对象)作为非const参数传递。这意味着,如果您有一个返回biker的函数:

Biker getBikerByNumber(int num);
不能将其用作
funcName
的参数:

someObj.funcName(getBikerByNumber(42), myBikeArray, 42, ...); // won't compile

因为rValo不绑定到非<代码> const 绑定到 const 参考(虽然也被下一个C++标准引入的rValk引用,已经被一些编译器实现).< /P> < p>每个引用中传递每个对象,就像每个副本传递它们:

someObj.funcName(myBiker, myBikeArray, 42, ...);
请注意,如果函数对每个非
const
引用使用参数,这表示函数可能更改它们。(有关详细信息,请参阅。)

此外,不能将右值(临时对象)作为非const参数传递。这意味着,如果您有一个返回biker的函数:

Biker getBikerByNumber(int num);
不能将其用作
funcName
的参数:

someObj.funcName(getBikerByNumber(42), myBikeArray, 42, ...); // won't compile

因为rValo不绑定到非<代码> const 参考。它们确实绑定到<代码> const 参考文献(虽然也被下一个C++标准引入的rValk引用,已经被一些编译器实现)。

我尝试过……这是我的第一个WOK,但我得到一个错误,上面写着:没有与call ref::funcName匹配的函数(bike&,bikerray&,int&等)……我尝试了一下……这是我第一次尝试,但我得到一个错误,它说:“没有与call ref::funcName匹配的函数。”(bike&,bikerray&,int&etc….在我的程序的前面…我为ref.h创建了一个对象,我们将其称为ref。然后将该对象设置为传递一个引用文件。因此,当我调用ref->funcName时,它应该传递给我bike对象中该配置文件的结果…但是我得到错误“没有匹配的函数用于调用ref::funcName。。。。@John:请编辑您的问题,以显示整个函数调用和整个结果错误消息,包括所有“候选项是:我现在正在编译,但是调用函数会崩溃我的程序…我想我需要和写标题的人谈谈!我想你需要回到你正在使用的任何东西来学习C++,看看你能不能找出构成你的程序的类和函数的区别和你使用的文件的名称。到目前为止,你所写的东西表明你要么不了解这个差异,要么你不注意细节,因为你的问题缺少细节。第一个问题会使C++变得困难;第二个问题(缺少对细节的关注)。将使任何不平凡的软件开发成为可能。@拉米什:我看到了来自java到C++的学生犯的错误。@约翰:一个头是一个文件,它可能包含任何数量的类(它们是语法实体)。-或无。就像一个文本文件可以包含任意数量的诗歌-或购物清单一样。在我的程序之前…我为ref.h创建了一个对象,让我们称它为ref。然后将该对象设置为传递一个引用文件。因此,当我调用ref->funcName时,它应该在Bike对象中传递该配置文件的结果…但我得到了错误“没有与call ref::funcNam匹配的函数