C ++のJavaのような注釈

annotations c++ java
C ++のJavaのような注釈

C ++にJavaの注釈のようなものはありますか?

たとえば、@ Overrideアノテーションは、別の関数をオーバーライドする関数をマークします。そうでない場合、コンパイル時にエラーが発生します。

C ++でこのようなものを探しています。

  26  2


ベストアンサー

C 11は、_generalized attributes_のサポートを提供します。これは、変数/関数だけでなく、たとえばステートメントにも適用できるため、Javaアノテーションのスーパーセットとして見ることができます。 ただし、C 11は一般化された属性の構文のみを定義し、ユーザーが属性を定義することを意味しません。

この記事では、_generalized attributes_の概要を説明しています:http://www.codesynthesis.com/~boris/blog/2012/04/18/cxx11-generalized-attributes/

GCCは、http://gcc.gnu.org/projects/cxx0x.htmlに従って、バージョン4.8からこの機能をサポートしています。

ユーザー定義の属性のサポートを実装するために、特にhttps://fedorahosted.org/gcc-python-plugin/のような高度な言語統合に基づいたコンパイラプラグインが有望です

18


C++0xにはこの機能があり、メンバー関数が基本クラスの関数をオーバーライドするかどうかを明示的に指定できます。コンパイラなどによって生成されるデフォルトの実装。

8


オーバーライド「注釈」を持つC ++ 0xがあります。 または、メソッドを実装しない場合にエラーとなるJavaの「インターフェイス」のようなコードをもっと実現したい場合は、抽象クラスを使用できます。

    class Base {
public:
    virtual void foo() = 0;
};

class Extended : public Base {
public:

    void foo2() {
        cout << "hi" << endl;
};

int main() {
    Extended e;
    e.foo();
}

基本クラスのfooをオーバーライドしないと、コンパイラエラーが発生します。 ただし、問題は、基本クラスが独自の実装を持つことができないことです。

1


この言語には何もありません。 期待できる最善の方法は、コンパイラ固有のオプションです。 まず、コンパイラの「プラグマ」のドキュメントを確認します。

0


タイトルとURLをコピーしました