我在访问类私有(private)成员变量部分中定义的静态常量变量时遇到问题。具体来说,下面编写的代码可以在构造函数中输出变量,但是当我尝试通过访问函数访问它时,会出现下面讨论的错误。如果有人知道原因,我将不胜感激。
#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()
{
当取消注释下一行时,我收到以下错误消息:
行定位工具:0:“TestStaticVariables::static_double_variable”,引用自:
//cout << static_double_variable;
}
int main(int argc, char* const argv[])
{
TestStaticVariables test_instance;
return 0;
}
最佳答案
尝试在类定义之外初始化变量,这是一个工作示例:
#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;
}
关于c++ - 通过类成员函数访问静态常量变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898387/