Compilerfehler C2244

Aktualisiert: November 2007

Fehlermeldung

'Bezeichner': Keine Übereinstimmung für Funktionsdefinition mit vorhandener Deklaration gefunden
'identifier' : unable to match function definition to an existing declaration

Eine nicht übliche Verwendung des unären Plus-Operators (+) vor einem Funktionsaufruf, der nicht in Klammern eingeschlossen war.

Dieser Fehler tritt nur in C++-Projekten auf.

Im folgenden Beispiel wird C2244 generiert:

// C2244.cpp
int func(char) {
   return 0;
} 

int func(int) {
   return 0;
}

int main() {
   +func;   // C2244
}

C2244 kann auch auftreten, wenn eine falsche Funktionssignatur für eine Memberfunktion einer Klassenvorlage verwendet wird.

// C2244b.cpp
// compile with: /c
template<class T> 
class XYZ {
   void func(T t);
};

template<class T>
void XYZ<T>::func(int i) {}   // C2244 wrong function signature
// try the following line instead
// void XYZ<T>::func(T t) {}

Außerdem kann C2244 auftreten, wenn eine falsche Funktionssignatur für eine Memberfunktionsvorlage verwendet wird.

// C2244c.cpp
// compile with: /c
class ABC {
   template<class T> 
   void func(int i, T t);
};

template<class T>
void ABC::func(int i) {}   // C2244 wrong signature
// try the following line instead
// void ABC::func(int i, T t) {}

Eine Funktionsvorlage kann nicht teilweise spezialisiert werden.

// C2244d.cpp
template<class T, class U>
class QRS {
   void func(T t, U u);
};

template<class T>
void QRS<T,int>::func(T t, int u) {}   // C2244