为什么在用devc++编译代码时会出现这个错误?

为什么在用devc++编译代码时会出现这个错误?,c++,C++,我想传递对象e的地址,但我收到以下错误: D:\Timecal1\timecal.cpp In function 'int main()': 101 9 D:\Timecal1\timecal.cpp [Error] invalid initialization of non-const reference of type 'entry&' from an rvalue of type 'entry*' 97 7 D:\Timecal1\timecal.cpp [Note] i

我想传递对象e的地址,但我收到以下错误:

D:\Timecal1\timecal.cpp In function 'int main()':
101 9   D:\Timecal1\timecal.cpp [Error] invalid initialization of non-const reference of type 'entry&' from an rvalue of type 'entry*'
97  7   D:\Timecal1\timecal.cpp [Note] in passing argument 1 of 'void menu(entry&)
有什么问题

这是我的密码:

包括 包括 包括 包括 //定义 定义“s” 使用名称空间std; 上课日期{ 私人: 国际日; 弦月; 国际年; 公众: 日期 { 日=0; 月份=空; 年份=0; } void vwritestream&o {
o当你打这样的电话时:

menu(&e);
menu(e);
您正在将e的地址传递给menu。您似乎认为此调用传递的是引用,但事实并非如此

但菜单需要一个条目&,所以您需要这样称呼它:

menu(&e);
menu(e);

当你打这样的电话时:

menu(&e);
menu(e);
您正在将e的地址传递给menu。您似乎认为此调用传递的是引用,但事实并非如此

但菜单需要一个条目&,所以您需要这样称呼它:

menu(&e);
menu(e);

代码的另一个问题是:

using namespace std;

但其中一个类的名称是time,它可能与std::time冲突。

代码的另一个问题是:

using namespace std;
但是其中一个类的名称是time,它可能与std::time冲突。

1-原型声明

void menu(entry&);
必须在主功能之外

2-菜单有一个引用参数,这意味着无论你传递什么变量,它都会引用该变量,而不是像通常那样复制它,所以你只需要传递该变量。如果你传递带有运算符地址的变量&就好像你传递了对变量引用的引用,所以你必须使用变量自责:

menu(e);
如果您的参数是指针,则将使用menu&e,如

void menu(entry*);
这意味着您必须传递变量的地址。

1-原型声明

void menu(entry&);
必须在主功能之外

2-菜单有一个引用参数,这意味着无论你传递什么变量,它都会引用该变量,而不是像通常那样复制它,所以你只需要传递该变量。如果你传递带有运算符地址的变量&就好像你传递了对变量引用的引用,所以你必须使用变量自责:

menu(e);
如果您的参数是指针,则将使用menu&e,如

void menu(entry*);

这意味着您必须传递变量的地址。

@cigien请解释menu&e;->menue;如果将e作为对象传递,而不是作为引用传递,则效果很好。为什么?定义s“”是危险的。它将以静默方式替换代码中的任何s标记,而不考虑这是否是一个好主意。由此产生的编译器错误可能是非常奇怪。更喜欢constexpr char='';或者只使用“”。我明白了。我不熟悉constexpr char='';我必须检查一下。谢谢!@cigien请解释menu&e;->menue;如果我将e作为对象传递,而不是作为引用传递,效果很好。为什么?定义s''很危险。它会默默地、不假思索地替换代码中的任何s标记关于这是否是一个好主意。产生的编译器错误可能非常奇怪。更喜欢constexpr char='';或者只使用“”。我明白了。我不熟悉constexpr char='';我必须检查一下。谢谢!哦,我明白了。但是如果我们声明原型获取地址,我们不应该将地址作为menu&e而不是menue传递吗?您没有通过声明一个指针条目*传递一个对象是一种类型的传递引用,但是在C++中,字面意思是通过引用。哦,我明白了。但是,如果我们声明原型取地址,我们不应该通过一个附加项吗?作为菜单和E而不是MENUE?您没有声明原型来取地址。您声明它引用了一个引用。不幸的是类似的术语不同。通过指针条目传递一个对象是一个传递引用的类型,但是在C++中,字面意思是传递一个引用。