Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
term resulteert niet in een functie die N-argumenten gebruikt
Opmerkingen
Er wordt een aanroep uitgevoerd naar een functie via een expressie. De expressie evalueert niet naar een aanwijzer naar een functie die het opgegeven aantal argumenten aanneemt.
Voorbeelden
In dit voorbeeld probeert de code niet-functionele elementen aan te roepen als functies. In het volgende voorbeeld wordt C2064 gegenereerd:
// 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
}
U moet aanwijzers aanroepen naar niet-statische lidfuncties vanuit de context van een objectexemplaren. In het volgende voorbeeld wordt C2064 gegenereerd en ziet u hoe u dit kunt oplossen:
// 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
}
Binnen een klasse moeten puntwijzers voor lidfuncties ook de context van het aanroepende object aangeven. In het volgende voorbeeld wordt C2064 gegenereerd en ziet u hoe u dit kunt oplossen:
// 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
}
};