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 ) } };

};

次に、メイン ファイルでこれらの配列を使用します。

main.cpp

#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