Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
'function' : function does not take number parameters
The function is called with an incorrect number of parameters.
C2660 can occur if you accidentally call a Windows API function rather than an MFC member function of the same name. To solve this problem:
Adjust the function call to conform to the format of the member function call.
Use the scope resolution operator (
::
) to tell the compiler to seek the function name in the global name space.
Examples
The following sample generates C2660.
// C2660.cpp
void func( int, int ) {}
int main() {
func( 1 ); // C2660 func( int ) not declared
func( 1, 0 ); // OK
}
C2660 can also occur if you attempt to directly call the Dispose method of a managed type. For more information, see Destructors and finalizers. The following sample generates C2660.
// C2660_a.cpp
// compile with: /clr
using namespace System;
using namespace System::Threading;
void CheckStatus( Object^ stateInfo ) {}
int main() {
ManualResetEvent^ event = gcnew ManualResetEvent( false );
TimerCallback^ timerDelegate = gcnew TimerCallback( &CheckStatus );
Timer^ stateTimer = gcnew Timer( timerDelegate, event, 1000, 250 );
stateTimer->Dispose(); // C2660
stateTimer->~Timer(); // OK
}
C2660 will occur if a derived class hides a function.
// C2660b.cpp
// C2660 expected
#include <stdio.h>
class f {
public:
void bar() {
printf_s("in f::bar\n");
}
};
class f2 : public f {
public:
void bar(int i){printf("in f2::bar\n");}
// Uncomment the following line to resolve.
// using f::bar; // - using declaration added
// or
// void bar(){__super::bar();}
};
int main() {
f2 fObject;
fObject.bar();
}
C2660 can occur if you invoke an indexed property incorrectly.
// C2660c.cpp
// compile with: /clr
ref class X {
double d;
public:
X() : d(1.9) {}
property double MyProp[] {
double get(int i) {
return d;
}
} // end MyProp definition
};
int main() {
X ^ MyX = gcnew X();
System::Console::WriteLine(MyX->MyProp(1)); // C2660
System::Console::WriteLine(MyX->MyProp[1]); // OK
}
C2660 can occur if you invoke an indexed property incorrectly.
// C2660d.cpp
// compile with: /clr
ref class A{
public:
property int default[int,int] {
int get(int a, int b) {
return a + b;
}
}
};
int main() {
A^ a = gcnew A;
int x = a[3][5]; // C2660
int x2 = a[3,5]; // OK
}
C2660 can occur if you define a new operator in a template class, but where the new operator creates an object whose type is other than the enclosing type.
// C2660e.cpp
// compile with: /c
#include <malloc.h>
template <class T> class CA {
private:
static T** line;
void* operator new (size_t, int i) {
return 0;
}
void operator delete(void* pMem, int i) {
free(pMem);
}
public:
CA () { new (1) T(); } // C2660
// try the following line instead
// CA () { new (1) CA<int>(); }
};
typedef CA <int> int_CA;
void AAA() {
int_CA list;
}