Aracılığıyla paylaş


Derleyici Hatası C2064

terim, N bağımsız değişkenlerini alan bir işlevi değerlendirmez

Açıklamalar

bir ifade aracılığıyla bir işleve çağrı yapılır. İfade, belirtilen sayıda bağımsız değişkeni alan bir işlevin işaretçisini değerlendirmez.

Örnekler

Bu örnekte kod işlev dışı işlevleri işlev olarak çağırmaya çalışır. Aşağıdaki örnek C2064 oluşturur:

// 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
}

Nesne örneği bağlamından statik olmayan üye işlevlerine işaretçiler çağırmanız gerekir. Aşağıdaki örnek C2064 oluşturur ve nasıl düzeltileceğini gösterir:

// 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
}

Bir sınıf içinde, üye işlev işaretçileri de çağıran nesne bağlamını göstermelidir. Aşağıdaki örnek C2064 oluşturur ve nasıl düzeltileceğini gösterir:

// 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
   }
};