Delen via


Compilerfout C3767

'functie' kandidaatfunctie(s) is/zijn niet toegankelijk

Opmerkingen

Een vriendfunctie die in een klasse is gedefinieerd, mag niet worden behandeld alsof deze is gedefinieerd en gedeclareerd in het bereik van de globale naamruimte. Het kan echter worden gevonden door argumentafhankelijke zoekactie.

C3767 kan ook worden veroorzaakt door een brekende wijziging: native typen zijn nu standaard privé in een /clr compilatie; zie Zichtbaarheid van typen voor meer informatie.

Voorbeelden

In het volgende voorbeeld wordt C3767 gegenereerd:

// 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();
};

In het volgende voorbeeld wordt C3767 gegenereerd:

// 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();
   }
};