0

我有一个功能

File2.cpp which contains the following code below

#include "File2.h"
//some codes in between

static float File2::computeData(string s,int a,int b,float c,float d)
{
float result;
//the compute code
return result;
}

在 File2.h ,我试图在我的课堂上声明它

Class File2
{
private:
//some variables
public:
static float computeData(string,int,int,float,float);
};

我收到一个错误,说不能声明成员函数静态浮点数据::计算数据(std::string,int,int,float,float) 具有静态链接 [-fpermissive]

然后也..在我的

主文件

我试图使用该功能

#include "File2.h"

float result;
result = computeData(string s,int a,int b,float c,float d);

它给了我 computeData 没有在这个范围内声明..

衷心感谢所有帮助!

4

2 回答 2

2

这是 的两个意思static声明静态成员函数仅在类定义中完成,这意味着该函数this在运行时不使用指针(即它是一个常规函数,恰好可以访问类中的私有数据File2)。static在其定义中声明一个函数是 C 语法 for static,并且意味着该函数在其当前文件之外是不可见/不可链接的。在 C++ 中,成员函数不能有静态链接。不要放入static静态成员函数的定义中。

于 2012-10-09T15:53:58.067 回答
2

您只将static成员方法声明为static类内部,而不是外部。定义应该是:

float File2::computeData(string s,int a,int b,float c,float d)
{
   float result;
   //the compute code
   return result;
}

类外没有static关键字。

在类定义之外,static提供内部(或静态)链接,静态成员函数不允许这样做:

class X
{
    static void foo(); //static class member
};

static void foo();     //static free function w/ internal linkage
于 2012-10-09T15:51:15.953 回答