Статические встроенные функции в классе

0

Я хочу сгруппировать свои математические функции. Мои математические функции включают в себя множество математических функций, включая функции в "math.h" и некоторые постоянные значения. Они не находятся в классе или пространстве имен. По соображениям производительности все они встроены. Но я хочу, чтобы они были сгруппированы в класс, если это не возможное пространство имен. Я просто хочу использовать мои функции следующим образом:

MyMath::Pow(2, 2);
MayMath::PI;

Поэтому мой вопрос: Если я могу использовать класс, функции и значения должны быть статичными, я думаю, но статические методы не могут быть встроены, поскольку я знаю. Я могу использовать "MyMath" в качестве пространства имен, если мы не сможем найти решение.

  • 0
    Почему статические методы не могут быть встроенными, если они определены внутри определения класса?
  • 0
    Я знаю, что статический модификатор не допускает никаких других модификаторов. Я ошибаюсь?
Показать ещё 8 комментариев
Теги:
inline
static-methods

5 ответов

3
Лучший ответ

Это звучит как проблема XY.

Вы пытаетесь поместить автономные функции (которые не принадлежат классу) внутри класса - предположительно, потому что вы исходите от другого объектно-ориентированного языка, который не позволяет вам писать автономные функции.

Чтобы написать математическую библиотеку, включающую такие функции, как pow, exp, log и т.д., Создайте пространство имен MyMath и определите функции. Нет необходимости в классе.

  • 0
    «предположительно потому, что вы пришли из другого объектно-ориентированного языка, который не позволяет вам писать автономные функции» Да, это правда.
  • 0
    Кстати, я не думаю, но есть ли потеря производительности из-за сложности пространства имен. Между n1 :: foo () и n1 :: n2 :: n3 :: foo ()?
Показать ещё 2 комментария
2

статическая функция/метод также может быть встроенной.

И методы, определенные внутри класса, встроены по умолчанию.

1

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

1

но статические методы не могут быть встроены, поскольку я знаю

Это не так, статические методы также могут быть встроенными.

0

static inline отлично действует.

Если класс хранения является extern, идентификатор имеет внешнюю связь, а встроенное определение также предоставляет внешнее определение.

Если класс хранения является статическим, идентификатор имеет внутреннюю связь, а встроенное определение невидимо в других единицах перевода.

На самом деле это редкость использовать inline с классом хранения, отличным от static.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню