Partager via


Erreur du compilateur C3381

'identifier' : les spécificateurs d’accès aux assemblys sont disponibles uniquement dans le code compilé avec une option /clr

Un type a été déclaré ou défini à l’aide d’un spécificateur d’accès, qui n’est autorisé que dans le code compilé à l’aide /clrde .

Notes

Cette erreur peut provenir d’un mot clé ou private protectedd’un publicsigne deux-points manquant (:) après un spécificateur d’accès au sein d’un class ou struct.

Dans C++/CLI, les types natifs peuvent être visibles en dehors d’un assembly, mais vous ne pouvez spécifier l’accès à l’assembly que pour les types natifs dans une /clr compilation. Pour plus d’informations, consultez Visibilité de type et /clr (Compilation Common Language Runtime).

Exemple

L’exemple suivant génère l’erreur C3381. Pour résoudre ce problème, commencez par supprimer le public spécificateur de la class A définition, ou compilez-le à l’aide de l’option /clr . Ensuite, ajoutez un signe deux-points après private pour spécifier l’accès pour class B {} b;. Cela est dû au fait qu’une classe imbriquée ne peut pas avoir de spécificateur d’accès à l’assembly dans le cadre de sa déclaration.

// C3381.cpp
// compile with: /c
public class A {   // C3381
    private class B {} b;   // C3381
};