Я хочу сгруппировать свои математические функции. Мои математические функции включают в себя множество математических функций, включая функции в "math.h" и некоторые постоянные значения. Они не находятся в классе или пространстве имен. По соображениям производительности все они встроены. Но я хочу, чтобы они были сгруппированы в класс, если это не возможное пространство имен. Я просто хочу использовать мои функции следующим образом:
MyMath::Pow(2, 2);
MayMath::PI;
Поэтому мой вопрос: Если я могу использовать класс, функции и значения должны быть статичными, я думаю, но статические методы не могут быть встроены, поскольку я знаю. Я могу использовать "MyMath" в качестве пространства имен, если мы не сможем найти решение.
Это звучит как проблема XY.
Вы пытаетесь поместить автономные функции (которые не принадлежат классу) внутри класса - предположительно, потому что вы исходите от другого объектно-ориентированного языка, который не позволяет вам писать автономные функции.
Чтобы написать математическую библиотеку, включающую такие функции, как pow
, exp
, log
и т.д., Создайте пространство имен MyMath
и определите функции. Нет необходимости в классе.
статическая функция/метод также может быть встроенной.
И методы, определенные внутри класса, встроены по умолчанию.
Статические функции могут быть встроены так же, как и все другие функции. Однако для вашего пространства имен использования используется лучшее решение.
но статические методы не могут быть встроены, поскольку я знаю
Это не так, статические методы также могут быть встроенными.
static inline
отлично действует.
Если класс хранения является extern, идентификатор имеет внешнюю связь, а встроенное определение также предоставляет внешнее определение.
Если класс хранения является статическим, идентификатор имеет внутреннюю связь, а встроенное определение невидимо в других единицах перевода.
На самом деле это редкость использовать inline
с классом хранения, отличным от static
.