Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
el término no se evalúa como una función con N argumentos
Observaciones
Se realiza una llamada a una función a través de una expresión. La expresión no se evalúa como un puntero para una función con el número de argumentos especificado.
Ejemplos
En este ejemplo, el código intenta llamar a elementos que no son funciones como funciones. En el ejemplo siguiente se genera la advertencia C2064:
// C2064.cpp
int i, j;
char* p;
void func() {
j = i(); // C2064, i is not a function
p(); // C2064, p doesn't point to a function
}
Debe llamar a punteros como funciones miembro no estáticas desde el contexto de una instancia de objeto. En el ejemplo siguiente se genera la advertencia C2064 y se muestra cómo corregirlo:
// C2064b.cpp
struct C {
void func1(){}
void func2(){}
};
typedef void (C::*pFunc)();
int main() {
C c;
pFunc funcArray[2] = {&C::func1, &C::func2};
(funcArray[0])(); // C2064
(c.*funcArray[0])(); // OK - function called in instance context
}
En una clase, los punteros de función miembro también deben indicar el contexto del objeto de llamada. En el ejemplo siguiente se genera la advertencia C2064 y se muestra cómo corregirlo:
// C2064d.cpp
// Compile by using: cl /c /W4 C2064d.cpp
struct C {
typedef void (C::*pFunc)();
pFunc funcArray[2];
void func1(){}
void func2(){}
C() {
funcArray[0] = &C::func1;
funcArray[1] = &C::func2;
}
void func3() {
(funcArray[0])(); // C2064
(this->*funcArray[0])(); // OK - called in this instance context
}
};