классы с ++ и статика - PullRequest
0 голосов
/ 26 января 2012

У меня есть вопрос относительно дизайна класса. Я хочу иметь класс, который инкапсулирует кучу связанных функций. Например, класс Statistics, который будет иметь статические функции для вычисления среднего арифметического, эмпирической дисперсии и т. Д. Или класс физики, который будет рассчитывать движение снаряда, волновое движение и т. Д.

Как вы ссылаетесь на эти функции в основном? Ссылаясь на пример статистики, в Java я бы сделал Statistics.calcMean().

Ответы [ 4 ]

4 голосов
/ 26 января 2012

Statistics::calcMean(). Вы также можете использовать пространство имен вместо статических членов класса.

3 голосов
/ 26 января 2012

Если между различными функциями вообще нет общего состояния, может быть, лучше создать не класс, а пространство имен:

namespace Statistics {
   // probably templated on the type of the value and the container...
   double calcMean( std::vector<double> const & values );
}

А потом звоните с основного:

int main() {
   std::vector<double> values = create_values();
   std::cout << "mean=" << Statistics::calcMean( values ) << std::endl;
}
1 голос
/ 26 января 2012

Используйте :: для ссылки на статические члены класса: Statistics::calcMean()

0 голосов
/ 26 января 2012

Определение статических методов:

static void calcMean();

Вызов:

Statistics::calcMean();
...