我想分组我的数学函数。我的数学函数包括许多数学函数,包括“math.h”中的函数和一些常量值。它们不在类或命名空间中。由于性能原因,它们都是内联的。但是如果不是可能的命名空间,我希望它们分组在一个类中。我只想使用这样的函数:
MyMath::Pow(2, 2);
MayMath::PI;
所以我的问题是;如果我可以使用类,函数和值必须是静态的,我想但是因为我知道,静态方法不能内联。如果我们找不到解决方案,我可以使用“MyMath”作为命名空间。
答案 0 :(得分:3)
这听起来像XY Problem。
你试图将一个独立的函数(不属于一个类)放在一个类中 - 可能是因为你来自另一个面向对象的语言,它不能让你编写独立的函数。
要编写包含pow
,exp
,log
等函数的数学库,请创建名称空间MyMath
并定义函数。没有必要上课。
答案 1 :(得分:2)
静态函数/方法也可以内联。
默认情况下,类中定义的方法是内联的。
答案 2 :(得分:1)
但是因为我知道
,所以无法内联静态方法
这不是真的,静态方法也可以内联。
答案 3 :(得分:1)
静态函数可以与所有其他函数内联相同。但是,对于您的用例命名空间是更好的解决方案。
答案 4 :(得分:0)
static inline
完全有效。
如果存储类是extern,则标识符具有外部链接,内联定义也提供外部定义。
如果存储类是静态的,则标识符具有内部链接,并且内联定义在其他翻译单元中不可见。
事实上,使用inline
存储类与static
不同的情况很少见。