2012-03-29 9 views
0

私は重いJavaの背景からC++になっています。cppクラスに静的定数を持たせるには?

どのようにしてクラスに関連する定数がありますか? それは、Javaだった場合、それは

public class Example{ 
    public static final int CONSTANT = 0; 
} 

public static void main (String[] args){ 
    System.out.println(Example.CONSTANT); 
} 

ようなものになるだろう、結果は私がこれまで考え出してきたC++でちょうど0

次のようになります。

class Example{ 
    const int LEVEL_INF; 
} 

は、この正しいですか?
ISO 98でさえ?

答えて

3
class Example{ 
    const int LEVEL_INF; 
}; 

は、クラスごとではなく、インスタンスごとです。あなたはそれが静的にする必要があります。

class Example{ 
    static const int LEVEL_INF; 
}; 

静的定数整数型の利点は、あなたが必ずしも外に、クラスの中にそれらを初期化することができるということです。また

class Example{ 
    static const int LEVEL_INF = 1337; 
}; 

、パブリックたい場合はpublicを追加それへのアクセス。

EDIT:クラス外でそれを初期化するには、@のildjarnの提案を1として:

//header.h 
class Example{ 
    static const int LEVEL_INF; 
}; 

//implementation.cpp 

const int Example::LEVEL_INF = 1337; 
+0

ODRを使用してLEVEL_INFを使用する必要があるまでは、これはうまくいくでしょう。その時点では、クラス外の定義が必要になるので、ここでそれを行う方法を示す価値があると思います。 – ildjarn

+0

@ildjarn true、edited。 –

+0

iso 98標準には何の影響もありませんか? – kotoko

1

限り、それはintのような積分定数、であるとして、あなたは多くのJava

class Example { 
public: 
    static const int LEVEL_INF = 0; 
}; 
のようにそれを行うことができます完全を期すために
2

は、ここにstatic const以外にそれを行うための別の方法です:

class Example 
{ 
    // Anonymous enum 
    enum { LEVEL_INF = 0; }; 
}; 
関連する問題