gpt4 book ai didi

c++ - g++ 在 *expected* 错误消息中给我奇怪的函数调用

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:42 25 4
gpt4 key购买 nike

情况是这样的:

void funct( unsigned u, double d, float f )
{
u = 12;
}
void funct( double u, int d, void* asd, float f )
{
u = 13;
}

int main()
{
const unsigned u = 123;
double d = 123.123;
float f = 123.123;

funct( u, d, f, 123 );

return 0;
}

给我:

./src/test.cpp:19: error: no matching function for call to 'funct(const unsigned int&, double&, float&, int)'
./src/test.cpp:4: note: candidates are: void funct(unsigned int, double, float)
./src/test.cpp:8: note: void funct(double, int, void*, float)

这绝对是预期的错误,因为没有合适的函数可以调用,好的,好的。但是看看编译器错误:

                                                          V        V       V
no matching function for call to 'funct(const unsigned int&, double&, float&, int)

为什么这些 & 在那里?当我进行正确的调用时 - 一切都很好,并且所有参数都没有像预期的那样作为引用传递。

使用 Ubuntu 10.04,64 位和 g++ version 4.4.3

最佳答案

您正在将一个可分配给(“左值”)的实变量传递给函数。当然,您是按值传递它,而不是按引用传递 - 但重点是,在您的函数调用中,您将能够也按引用传递它,因为它是一个左值 .

那么:如果你有一个int&类型的值(lvalue),你可以将它发送给一个接受int的函数(rvaluelvalue)- 恰恰相反。

关于c++ - g++ 在 *expected* 错误消息中给我奇怪的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com