如何在c ++中使用全局静态变量

时间:2014-08-08 09:18:59

标签: c++

我的static int defaultvalue = 1中有.cpp file我有static class function这样的defaultvalue在同一个文件中使用全局静态变量//static function int Myclass::func(int rate) { int finalrate = defaultvalue; switch(rate) { case 2: finalrate=2; break; default: break; } return finalrate; }

undefined reference to Myclass::defaultvalue.

当我尝试编译时。我收到错误{{1}}

有人可以帮帮我。谢谢。

4 个答案:

答案 0 :(得分:1)

您需要在h中将其声明为extern,然后在.cpp中将其声明为“body”。

对于你的情况:

中的.h

extern int defaultValue;

在.cpp

int MyClass::defaultValue=0;

答案 1 :(得分:1)

如果该变量是在不同的模块中定义的,那么您必须在对当前模块的任何引用之前使用extern关键字,例如,

extern int defaultValue;

这将通知编译器它在别处定义。至少一个模块应具有非外部定义

int defaultvalue;

或链接的人会不高兴。

或者,您可以在.h文件中添加常量定义,并在#include.h来源中.cpp // File defval.h const int defaultvalue = 42; 个文件。例如:

#include defval.h

然后在您的来源中,使用

{{1}}

答案 2 :(得分:1)

或者只是把它放在课堂上:

class Myclass
{
  public:
     static int func(int rate);
     static const int defaultvalue = 1 ;
};

答案 3 :(得分:0)

我认为最好的方法是将静态成员放入类中,然后不要忘记在cpp文件中初始化它。

file.h
class Myclass
{
  public:
     static int func(int rate);
     static int defaultvalue;
};

file.cpp
int MyClass::defaultValue=0;
int Myclass::func(int rate)
{
...
}