Kompilatorfel C3381

"identifierare" : sammansättningsåtkomstspecificerare är endast tillgängliga i kod som kompilerats med ett /clr-alternativ

Anmärkningar

En typ har deklarerats eller definierats med hjälp av en åtkomstspecifikator, vilket endast tillåts i kod som kompilerats med hjälp av /clr.

Det här felet kan bero på ett felplacerat , publiceller protected nyckelord eller ett saknat privatekolon (:) efter en åtkomstspecificerare inom en class eller struct.

I C++/CLI kan inbyggda typer visas utanför en sammansättning, men du kan bara ange sammansättningsåtkomst för inbyggda typer i en /clr kompilering. Mer information finns i Typens synlighet och /clr (Common Language Runtime-kompilering).

Example

I följande exempel genereras C3381. Åtgärda problemet genom att antingen ta bort public-specificeraren från class A-definitionen, eller kompilera med hjälp av /clr-alternativet. Lägg sedan till ett kolon efter private för att ange åtkomst för class B {} b;. Det beror på att en kapslad klass inte kan ha en sammansättningsåtkomstspecificerare som en del av deklarationen.

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