我有这个重载的功能:
var token = $('input[name="__RequestVerificationToken"]', form).val();
$.ajax({
type: "POST",
url: newurl,
beforeSend: function (request)
{
request.setRequestHeader("__RequestVerificationToken", token);
},
data: form.serialize(),
datatype: "JSON",
success: function..,
error: function..
})
当我这样做时:
第一案:
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
我是C ++的新手,我不知道这个代码有什么问题,但它完全用C#编译(具有重载函数和可选参数的知识)。
注意:这只是实际代码的表示 - 用户定义的类型用作参数。
编辑:增加了第二个案例,第一个案例已经回答。
答案 0 :(得分:2)
首先,参数声明html,
body,
#map {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
实际上与<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
<div id="map"></div>
相同。然后,
int numbers[]
是int* numbers
的数组,即anArrayOfIntsWithValues
;它可能会衰减到const int
,但无法隐式转换为const int[2]
和const int*
,然后调用失败。
如果您希望调用第二个重载,可以将int
的类型更改为int*
,或将参数anArrayOfIntsWithValues
的类型更改为int [2]
(或numbers
),使它们匹配。