Compiler Error C2647

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at Compiler Error C2647.

operator': cannot dereference a 'type1' on a 'type2'

The left operand of a pointer-to-member operator ( ->* or .* ) cannot be implicitly converted to a type related to the right operator.

The following sample generates C2647:

// C2647.cpp  
class C {};  
class D {};  
  
int main() {  
   D d, *pd;  
   C c, *pc = 0;  
   int C::*pmc = 0;  
   pd->*pmc = 0;   // C2647  
   d.*pmc = 0;   // C2647  
  
   // OK  
   pc->*pmc = 0;  
   c.*pmc = 0;  
}  

Show: