gpt4 book ai didi

c++ - 使用数组参数和非数组参数调用重载函数

转载 作者:行者123 更新时间:2023-11-30 03:31:01 25 4
gpt4 key购买 nike

我有这个重载函数:

CString TestFunction(CString s, int number, int optPar1 = 123, int optPar2 = 456) //...
CString TestFunction(int index, CString s, int numbers[], int optPar1 = 123, int optPar2 = 456) //...
CString TestFunction(CString s, int numbers[], int optPar1 = 123, int optPar2 = 456) //...

当我这样做时:

第一种情况:

CString s = TestFunction(someString, anArrayOfIntsWithValues);

第二种情况:

for (int i =0; i < max; i++)
{
CString s = TestFunction(i, someString, anArrayOfIntsWithValues);
}

它给了我:

第一种情况:

error C2664: 'CString Class1::TestFunction(CString, int, int, int)' : cannot convert parameter 2 from 'const int [2]' to 'int'
5 IntelliSense: no instance of overloaded function "Class1::TestFunction" matches the argument list

第二种情况:

Error   2   error C2664: 'CString Class1::TestFunction(CString, int,int,int)' : cannot convert parameter 1 from 'int' to 'CString'
6 IntelliSense: no instance of overloaded function "Class1::TestFunction" matches the argument list

我是 C++ 的新手,我不知道这段代码有什么问题,但它是用 C# 完美编译的(具有重载函数和可选参数的知识)。

注意:这只是真实代码的表示 - 用户定义的类型用作参数。

编辑:添加了第二个案例,第一个案例已经得到解答。

最佳答案

首先,参数声明int numbers[]其实和int* numbers是一样的。然后,

anArrayOfIntsWithValues是一个const int数组,即const int[2];它可能会衰减为 const int*,但不能同时隐式转换为 intint*,然后调用失败。

如果要调用第 2 个重载,可以将 anArrayOfIntsWithValues 的类型更改为 int [2],或者更改参数类型 numbers const int[](或 const int*),使它们匹配。

关于c++ - 使用数组参数和非数组参数调用重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44557755/

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