C++ 如何在c++;
在我的C++ 如何在c++;,c++,C++,在我的.cpp文件中有static int defaultvalue=1,我有一个类似这样的静态类函数,它在同一个文件中使用全局静态变量defaultvalue //static function int Myclass::func(int rate) { int finalrate = defaultvalue; switch(rate) { case 2: fina
.cpp文件中有static int defaultvalue=1
,我有一个类似这样的静态类函数
,它在同一个文件中使用全局静态变量defaultvalue
//static function
int Myclass::func(int rate)
{
int finalrate = defaultvalue;
switch(rate)
{
case 2:
finalrate=2;
break;
default:
break;
}
return finalrate;
}
当我试图编译它时,我得到了一个错误,错误是未定义对Myclass::defaultvalue的引用。
谁能帮我一下吗?谢谢 您需要在h中将其声明为extern,然后在.cpp中将其声明为“body”
对于您的情况:
在
extern int defaultValue;
在.cpp中
int MyClass::defaultValue=0;
如果该变量是在不同的模块中定义的,则在引用该变量之前,您必须在当前模块中使用extern
关键字,例如
extern int defaultValue;
这将通知编译器它是在别处定义的。至少有一个模块应具有非外部定义
int defaultvalue;
否则他们会不高兴
或者,您可以在.h
文件中放置一个常量定义,并在每个.cpp
源中包含.h
文件。例如:
// File defval.h
const int defaultvalue = 42;
然后在源代码中,使用
#include defval.h
或者把它放在课堂上:
class Myclass
{
public:
static int func(int rate);
static const int defaultvalue = 1 ;
};
我认为最好的方法是将静态成员放入类中,然后不要忘记在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)
{
...
}
try::defaultvalue将指定全局名称空间如果它位于不同的文件中,则可能需要将其声明为extern。它们位于同一文件“如何在c++中使用全局静态变量”-只是不需要。编译器正在查找Myclass::defaultvalue
,但它听起来不像defaultvalue
是Myclass
的成员。不管怎样,这个代码很愚蠢。没有理由在这里或其他任何地方使用全局变量。