次の方法で共有


コンパイラ エラー C3381

'identifier': アセンブリ アクセス指定子は、/clr オプションと共にコンパイルされたコードでのみ使用できます

型がアクセス指定子を使用して宣言または定義されました。これは、/clr を使用してコンパイルされたコードでのみ許可されます。

解説

このエラーは、publicprotected、または 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
};