2

クラス内で定義する static const フィールドを使用しようとしています。
そのように定義すると:

class DisjunctionQuery : public Query
{

  public:
    DisjunctionQuery ();
    static const std::string prefix;


};
const std::string DisjunctionQuery::prefix = "Or";

「DisjunctionQuery::prefix」の複数の定義と、そのように変更した場合 (2 行を削除):

class DisjunctionQuery : public Query
{

  public:
    DisjunctionQuery ();
    //static const std::string prefix;


};
//const std::string DisjunctionQuery::prefix = "Or";

別の場所で呼び出そうとすると、「プレフィックス」は「DisjunctionQuery」のメンバーではありません。

どうすればそれを機能させることができますか?ありがとう。

4

1 に答える 1

8

定義を単一の実装ファイルに移動します。

ヘッダーにそのままにしておくと、1 つの定義ルールが破られます。ヘッダーを含む各ファイルはメンバーを定義しようとしますがstatic、これは間違っています。

//DisjunctionQuery.h
class DisjunctionQuery : public Query
{
  public:
    //....
    static const std::string prefix;
};

//DisjunctionQuery.cpp
#include "DisjunctionQuery.h"
const std::string DisjunctionQuery::prefix = "Or";
于 2012-06-11T15:04:26.127 に答える