Как иметь статические константы в классе cpp? - PullRequest
0 голосов
/ 30 марта 2012

Я вхожу в c ++ из тяжелого Java-фона.

Как у вас есть константы, связанные с классом?Если бы это была Java, это было бы что-то вроде

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

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

И результат был бы просто 0.

В C ++ я до сих пор рассчитывал:это правильно?
Даже по ISO 98?

Ответы [ 3 ]

3 голосов
/ 30 марта 2012
class Example{
    const int LEVEL_INF;
};

не для класса, а для каждого экземпляра. Вам нужно сделать это статичным:

class Example{
    static const int LEVEL_INF;
};

Преимущество статических интегральных типов const заключается в том, что вы можете инициализировать их внутри класса, а не обязательно снаружи:

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

Кроме того, добавьте public, если вы хотите публичный доступ к нему.

РЕДАКТИРОВАТЬ: Согласно предложению @ ildjarn, инициализировать его вне класса:

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

//implementation.cpp

const int Example::LEVEL_INF = 1337;
2 голосов
/ 30 марта 2012

Ради полноты, вот другой способ сделать это, кроме static const:

class Example
{
    // Anonymous enum
    enum { LEVEL_INF = 0; };
};
1 голос
/ 30 марта 2012

Пока это целочисленная константа, например int, вы можете делать это так же, как в Java

class Example {
public:
    static const int LEVEL_INF = 0;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...