컴파일러 오류 C2276
'operator': 바인딩된 멤버 함수 식에 대한 잘못된 작업
컴파일러에서 멤버에 대한 포인터를 만드는 데 사용되는 구문에 문제가 있습니다.
설명
클래스 형식 대신 인스턴스 변수를 사용하여 멤버를 한정하여 멤버에 대한 포인터를 만들려고 할 때 오류가 C2276
자주 발생합니다. 잘못된 구문을 사용하여 멤버 함수를 호출하려는 경우에도 이 오류가 표시 될 수 있습니다.
예시
이 샘플에서는 C2276이 발생할 수 있는 여러 가지 방법과 이를 해결하는 방법을 보여줍니다.
// C2276.cpp
class A {
public:
int func(){return 0;}
} a;
int (*pf)() = &a.func; // C2276
// pf isn't qualified by the class type, and it
// tries to take a member address from an instance of A.
// Try the following line instead:
// int (A::*pf)() = &A::func;
class B : public A {
public:
void mf() {
auto x = &this -> func; // C2276
// try the following line instead
// auto x = &B::func;
}
};
int main() {
A a3;
auto pmf1 = &a3.func; // C2276
// try the following line instead
// auto pmf1 = &A::func;
}