C++错误:不是成员或多个定义
C++ error: not a member OR multiple definition
我正在尝试使用我在类中定义的静态常量字段。
当我这样定义它时:
class DisjunctionQuery : public Query
{
public:
DisjunctionQuery ();
static const std::string prefix;
};
const std::string DisjunctionQuery::prefix = "Or";
它说:'DisjunctionQuery::p refix'的多重定义如果我以这种方式更改它(删除两行):
class DisjunctionQuery : public Query
{
public:
DisjunctionQuery ();
//static const std::string prefix;
};
//const std::string DisjunctionQuery::prefix = "Or";
它说当我尝试在另一个地方调用它时,"前缀"不是"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";
相关文章:
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- C++令牌定义成员
- 在没有类定义的标头中定义成员变量
- 如何在类的构造函数中定义成员向量的大小
- 如何在C++中动态定义成员函数
- C++ Boost.Serialization - 用户定义成员的非侵入式序列化
- C++类 - 使用公共变量并在类外定义成员函数
- G++ - 对已定义成员函数的未定义引用
- 在哪里以及如何定义成员变量?在头文件还是实现文件中?
- 是否可以修改STL并自定义成员函数
- 从 boost::mpl:vector 类型列表中定义成员变量
- 在构造对象时定义成员函数
- 为什么定义成员函数指针变量需要类名
- 复制构造函数中的 C++ 用户定义成员
- 如何根据类参数定义成员类运算符
- 使用指向未定义成员函数的指针时的未定义引用
- 如何在运行时定义成员数组大小
- C++-在模板类之外但在头中定义成员函数
- c++在不知道对象类型的情况下定义成员函数指针
- 在特定偏移量中定义成员的结构