Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
výraz se nevyhodnocuje jako funkce, která přebírá argumenty N.
Poznámky
Volání funkce se provádí prostřednictvím výrazu. Výraz se nevyhodnocuje jako ukazatel na funkci, která přebírá zadaný počet argumentů.
Příklady
V tomto příkladu se kód pokusí volat funkce, které nejsou funkcemi. Následující příklad vygeneruje 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
}
Z kontextu instance objektu je nutné volat ukazatele na nestatické členské funkce. Následující příklad vygeneruje C2064 a ukazuje, jak ho opravit:
// 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
}
V rámci třídy musí ukazatele členské funkce také indikovat kontext volajícího objektu. Následující příklad vygeneruje C2064 a ukazuje, jak ji opravit:
// 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
}
};