【发布时间】:2015-10-18 22:37:27
【问题描述】:
这就是我所拥有的:
struct Foo
{
static std::array<double, 4> acgt_default_background_frequencies() { return {0.281774, 0.222020, 0.228876, 0.267330}; }
};
但我更愿意不使用函数,而只使用一个变量,如下所示:
struct Foo
{
static constexpr std::array<double, 4> acgt_default_background_frequencies = {0.281774, 0.222020, 0.228876, 0.267330};
};
我想要编译的东西,但是当我 try to use Foo::acgt_default_background_frequencies 它给出链接器错误“未定义对 `Foo::acgt_default_background_frequencies' 的引用”。
我正在尝试做的事情可能吗?我认为,如果我将值内联为 const,而不是将其隐藏在 .cpp 文件中,并且与函数相比,使用常量而不是函数,我认为对我的标题的读者来说更清楚。 constexpr 的目的不是允许这样的事情吗?如果不可能,为什么不呢?
【问题讨论】:
-
您的函数方法效率非常低,因为它每次调用时都会复制整个数组。您可以通过将数组设为静态并返回对它的引用来解决此问题。