다음을 통해 공유


컴파일러 오류 C2244

'identifier': 함수 정의를 기존 선언과 일치시킬 수 없음

단항 + 연산자의 비정상적인 사용은 괄호가 없는 함수 호출 앞에 사용되었습니다.

이 오류는 C++ 프로젝트에서만 발생합니다.

다음 샘플에서는 C2244를 생성합니다.

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

int func(int) {
   return 0;
}

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

C2244는 클래스 템플릿의 멤버 함수에 잘못된 함수 시그니처를 사용하는 경우에도 발생할 수 있습니다.

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

멤버 함수 템플릿에 잘못된 함수 시그니처를 사용하는 경우에도 C2244가 발생할 수 있습니다.

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

함수 템플릿을 부분적으로 특수화할 수 없습니다.

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