'identifier': アセンブリ アクセス指定子は、/clr オプションと共にコンパイルされたコードでのみ使用できます
型がアクセス指定子を使用して宣言または定義されました。これは、/clr
を使用してコンパイルされたコードでのみ許可されます。
解説
このエラーは、public
、protected
、または private
キーワードの位置が間違っているか、class
または struct
内のアクセス指定子の後にコロン (:
) がないことが原因である可能性があります。
C++/CLI では、ネイティブな型は、アセンブリ外でも参照できますが、ネイティブな型のアセンブリ アクセスは、/clr
コンパイル単位でのみ指定できます。 詳細については、「タイプの可視性」および「/clr
(共通言語ランタイムのコンパイル)」を参照してください。
例
次の例では C3381 が生成されます。 これを修正するには、最初に class A
定義から public
指定子を削除するか、/clr
オプションを使用してコンパイルします。 次に、private
の後にコロンを追加して、class B {} b;
のアクセスを指定します。 これは、入れ子になったクラスに宣言の一部としてアセンブリ アクセス指定子を含めることはできないためです。
// C3381.cpp
// compile with: /c
public class A { // C3381
private class B {} b; // C3381
};