1
我有这个重载函数:调用重载函数与阵列参数和非阵列参数
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);
}
它g艾夫斯我:
在第一种情况:
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#编译(了解重载函数和可选参数)。
注意:这只是真实代码的表示 - 用户定义类型用作参数。
编辑:增加了第二例和第一例已被回答。
请注意,在参数列表中使用'[]'是古老的,实际上数组不是通过值传递。如果您来自其他语言,这可能与您的期望有所不同 –