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 /clr
de .
Notes
Cette erreur peut provenir d’un mot clé ou private
protected
d’un public
signe 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
};