“
如果您在.cc文件中聲明瞭一個靜態方法。
原因是static在.cc文件中的含義與類聲明中的有所不同。這確實很愚蠢,但是關鍵字static具有三種不同的含義。在.cc文件中,static關鍵字表示該功能對於該特定文件之外的任何代碼均不可見。
這意味着您不應該在.cc文件中使用static來定義每個類的方法和變量。幸運的是,您不需要它。在C ++中,不允許使用與實例變量或實例方法同名的靜態變量或靜態方法。因此,如果您在類聲明中將變量或方法聲明爲static,則在定義中不需要static關鍵字。編譯器仍然知道變量/方法是類的一部分,而不是實例的一部分。
”
錯誤用法示例:
在頭文件FOO.h:
class FOO
{
public:
static int func();
};
在cc文件FOO.cc:
static int FOO::func()
{
/* code */
}
正確用法示例1:
在頭文件FOO.h:
class FOO
{
public:
static int func();
};
在cc文件FOO.cc:
int FOO::func()
{
/* code */
}
正確用法示例2:
在頭文件FOO.h:
class FOO
{
public:
static int func()
{
/* code */
}
};