我有一个定义了一些数组的类。
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文件,以便编译器可以从中创建目标文件。
#include "Points.hpp"
但这并没有解决链接器错误。
我的印象是,可以在类声明中将变量初始化为C ++ 11中的静态constexpr,然后按照我的方式访问它们,如下所示:{{ 3}}
我是否需要为Points创建一个构造函数然后实例化该类?我做错了什么?
感谢任何反馈!谢谢!
答案 0 :(得分:2)
根据@dyp建议,我研究了静态数据成员的定义。
我的问题要求我定义Points类的静态成员变量。
按照以下问题中的示例:
Is a constexpr array necessarily odr-used when subscripted?
和
Defining static members in C++
我需要添加:
// in some .cpp
constexpr std::array< double, 1 > Points::a1;