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#編譯(瞭解重載函數和可選參數)。
注意:這只是真實代碼的表示 - 用戶定義類型用作參數。
編輯:增加了第二例和第一例已被回答。
請注意,在參數列表中使用'[]'是古老的,實際上數組不是通過值傳遞。如果您來自其他語言,這可能與您的期望有所不同 –