Partager via


Erreur du compilateur C3767

'function' fonction candidate(s) non accessible(s)

Une fonction friend définie dans une classe n’est pas censée être traitée comme si elle était définie et déclarée dans l’étendue de l’espace de noms global. Toutefois, elle peut être trouvée par recherche dépendante de l’argument.

C3767 peut également être dû à une modification cassant : les types natifs sont désormais privés par défaut dans une compilation /clr ; consultez Visibilité des types pour plus d’informations.

Exemple

L’exemple suivant génère l’erreur C3767 :

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

L’exemple suivant génère l’erreur C3767 :

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