Partilhar via


Erro do compilador C3381

'Identificador' : Os especificadores de acesso ao assembly só estão disponíveis em código compilado com uma opção /clr

Observações

Um tipo foi declarado ou definido usando um especificador de acesso, que só é permitido no código compilado usando /clr.

Este erro pode resultar de uma palavra-chave public, protected ou private mal colocada, ou de dois pontos ausente (:) após um especificador de acesso dentro de um class ou struct.

Em C++/CLI, os tipos nativos podem ser visíveis fora de um assembly, mas você só pode especificar o acesso ao assembly para tipos nativos em uma /clr compilação. Para obter mais informações, consulte Visibilidade de tipo e /clr (Compilação do Common Language Runtime).

Example

O exemplo a seguir gera C3381. Para corrigi-lo, primeiro remova o public especificador da class A definição ou compile usando a /clr opção. Em seguida, adicione dois pontos depois de private para especificar acesso a class B {} b;. Isso ocorre porque uma classe aninhada não pode ter um especificador de acesso de assemblagem como parte da sua declaração.

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