我应该在头文件中哪里声明我的私有类级静态常量?

时间:2012-08-30 23:35:30

标签: c++ static-members

我应该在头文件中指定我的类级静态常量吗?

class ABC
{
public:
    enum A1
    {
    };

    //Manager functions
    ABC(int x )
    {
        m_x = x;
    };
    viirtual ~ABC();

protected:
    int data;

private:
    //Typedef
    typedef std::pair(int, int) INT_PAIR;
    typedef std::pair(int, int) INT_PAIR1;
    ...
    //functions
    void increment_x();
    //Member data
    int m_x;
    ... whole lot of other data
}

在这个类声明(ABC.h)中,我应该在哪里声明一个私有静态const变量,如版本号?

static const std::string version;

它究竟适合哪里?它不是真正的成员数据,因为它是静态的。 (不是每个对象)

编辑 - 1:

这些变量是否有特定优先权?它们是在开始时(在ABC类之后的第一个开口大括号之后?或者在我的代码段中的私有关键字之后?)(或者是在typedef之后?)

我当然会在我的abc.cpp文件中提到    const std :: string version =" 10&#34 ;;

编辑2: 我期待像卢卡斯所提到的那样的答案。(请提供有效的推理)

在类似我下面提到的类声明中,应该放置静态变量吗?

请不要提供答案,提到decl需要在.cpp文件中的.h文件和定义中。 - 我已经知道了。

1 个答案:

答案 0 :(得分:5)

A.h文件(标题:)

class A {
...
private:
    static const std::string version ;
} ;

A.cpp文件(正文,请记住#include "A.h":)

const std::string A::version = "10" ;