通过类成员函数访问静态const变量的问题

ban*_*edo 1 c++

我在访问我的类私有成员变量部分中定义的静态const变量时遇到问题.具体来说,下面编写的代码可以在构造函数中输出变量,但是当我尝试通过访问器函数访问它时,我得到下面讨论的错误.如果有人知道为什么我会感激你的帮助.

#include <iostream>
using namespace std;

class TestStaticVariables
{
 // Private member variable:
 static const double static_double_variable;
public:
 // Constructor:
 TestStaticVariables()
 {
  // Initialization:
  static const double static_double_variable = 20.0;
  cout << static_double_variable;
 }
 // Member Function:
 void test();
};

void TestStaticVariables::test()
{
Run Code Online (Sandbox Code Playgroud)

当下一行取消注释时,我收到以下错误消息:

行位置工具:0:"TestStaticVariables :: static_double_variable",引自:

 //cout << static_double_variable;
}

int main(int argc, char* const argv[])
{

 TestStaticVariables test_instance;

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

xia*_*ian 9

尝试在类定义之外初始化变量,这是一个工作示例:

#include <iostream>

class Foo {
    static const double _bar;

public:
    Foo();

    void Bar();
};

const double Foo::_bar = 20.0;

Foo::Foo() {
    std::cout << Foo::_bar << std::endl;
}

void Foo::Bar() {
    std::cout << Foo::_bar << std::endl;
}

int main( int argc, char *argv[] ) {
    Foo f;
    f.Bar();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)