Статическая структура в C ++ - PullRequest
10 голосов
/ 11 июня 2010

Я хочу определить структуру, в которой будут храниться некоторые математические константы.
Вот что у меня сейчас есть:

struct consts {
    //salt density kg/m3
   static const double gamma;
};

const double consts::gamma = 2350;

Работает нормально, но будет более 10 констант с плавающей точкой, поэтому я не хочу писать «статические константы» перед каждой из них. И определите что-то подобное:

static const struct consts {
    //salt density kg/m3
   double gamma;
};

const double consts::gamma = 2350;

Выглядит нормально, но я получил эти ошибки:
1. Переопределение функции-члена не допускается
2. элемент нестатических данных не может быть определен вне его класса

Мне интересно, есть ли способ сделать это на C ++?

Ответы [ 2 ]

30 голосов
/ 11 июня 2010

Используйте пространство имен, а не пытайтесь преобразовать структуру в пространство имен.

namespace consts{
    const double gamma = 2350;
}

Метод доступа к данным также имеет точно такой же синтаксис.Так, например:

double delta = 3 * consts::gamma;
11 голосов
/ 11 июня 2010

Звучит так, будто вам действительно нужно пространство имен:

namespace consts { 
    const double gamma = 2350.0;
    // ...
}

За исключением того, что я попытаюсь придумать для него лучшее имя, чем consts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...