我的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}}
有人可以帮帮我。谢谢。
答案 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)
{
...
}