2

我有一个定义一些数组的类。

点数.hpp

class Points {

public:

    static constexpr std::array< double, 1 > a1 = { {
            +0.0 } };

    static constexpr std::array< double, 2 > a2 = { {
            -1.0 / std::sqrt( 3.0 ),
            +1.0 / std::sqrt( 3.0 ) } };

};

然后我的主文件使用这些数组。

主文件

#include "Points.hpp"

int main()
{
    // Example on how to access a point.
    auto point = Points::a2[0];

    // Do something with point.
}

当我使用 C++11 和 g++ 4.8.2 编译我的代码时,我收到以下链接器错误:

undefined reference to `Points::a2'

我试图创建一个 Points.cpp 文件,以便编译器可以从中创建一个目标文件。

点数.cpp

#include "Points.hpp"

但这并没有解决链接器错误。

我的印象是可以在类声明中将变量初始化为 C++11 中的静态 constexpr,然后按照我的方式访问它们,如以下问题所示:https ://stackoverflow.com /a/24527701/1991500

我是否需要为 Points 创建一个构造函数,然后实例化该类?我究竟做错了什么?

任何反馈表示赞赏!谢谢!

4

1 回答 1

2

根据@dyp 的建议,我研究了静态数据成员的定义。

我的问题需要我定义 Points 类的静态成员变量。

按照这些问题中的示例:

下标时是否必须使用 constexpr 数组?

在 C++ 中定义静态成员

我需要补充:

// in some .cpp
constexpr std::array< double, 1 > Points::a1;
于 2014-09-21T03:28:08.720 回答