Freigeben über


Compilerfehler C3767

'Funktion': Auf mögliche Funktion(en) kann nicht zugegriffen werden

Bei einer in einer Klasse definierten Friend-Funktion wird nicht davon ausgegangen, dass sie so behandelt wird, als wäre sie im globalen Gültigkeitsbereich des Namespaces definiert und deklariert worden. Sie kann jedoch mittels einer argumentbezogenen Suche gefunden werden.

C3767 kann auch durch eine fehlerhafte Änderung verursacht werden: Systemeigene Typen sind jetzt standardmäßig in einer /clr-Kompilierung privat. Weitere Informationen finden Sie unter Typsichtbarkeit .

Beispiel

Im folgenden Beispiel wird C3767 generiert:

// C3767a.cpp
// compile with: /clr
using namespace System;
public delegate void TestDel();

public ref class MyClass {
public:
   static event TestDel^ MyClass_Event;
};

public ref class MyClass2 : public MyClass {
public:
   void Test() {
      MyClass^ patient = gcnew MyClass;
      patient->MyClass_Event();
    }
};

int main() {
   MyClass^ x = gcnew MyClass;
   x->MyClass_Event();   // C3767

   // OK
   MyClass2^ y = gcnew MyClass2();
   y->Test();
};

Im folgenden Beispiel wird C3767 generiert:

// C3767c.cpp
// compile with: /clr /c

ref class Base  {
protected:
   void Method() {
      System::Console::WriteLine("protected");
   }
};

ref class Der : public Base {
   void Method() {
      ((Base^)this)->Method();   // C3767
      // try the following line instead
      // Base::Method();
   }
};