Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
term utvärderas inte till en funktion som tar N-argument
Anmärkningar
Ett anrop görs till en funktion via ett uttryck. Uttrycket utvärderas inte till en pekare till en funktion som tar det angivna antalet argument.
Exempel
I det här exemplet försöker koden anropa icke-funktioner som funktioner. I följande exempel genereras 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
}
Du måste anropa pekare till icke-statiska medlemsfunktioner från kontexten för en objektinstans. Följande exempel genererar C2064 och visar hur du åtgärdar det:
// 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
}
I en klass måste medlemsfunktionspekare också ange den anropande objektkontexten. Följande exempel genererar C2064 och visar hur du åtgärdar det:
// 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
}
};