簡體   English   中英

C ++錯誤:不是成員或多重定義

[英]C++ error: not a member OR multiple definition

我試圖使用我在類中定義的靜態const字段。
當我這樣定義時:

class DisjunctionQuery : public Query
{

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


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

它說:'DisjunctionQuery :: prefix'的多重定義,如果我改變它(刪除兩行):

class DisjunctionQuery : public Query
{

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


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

它說當我嘗試在另一個地方調用它時,'prefix'不是'DisjunctionQuery'的成員。

我怎樣才能使它工作? 謝謝。

您將定義移動到單個實現文件。

如果將其保留在標題中,則會破壞一個定義規則 包含標頭的每個文件都將嘗試定義static成員,這是錯誤的。

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

//DisjunctionQuery.cpp
#include "DisjunctionQuery.h"
const std::string DisjunctionQuery::prefix = "Or";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM