gpt4 book ai didi

c++ - 使用静态方法编译时出错

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:01 25 4
gpt4 key购买 nike

在我的标题中声明,尝试在我的代码中使用静态方法编译我的文件。我的 computeCivIndex() 正在尝试从用户那里获取 5 个输入并进行计算并返回浮点值。

this.sunType 用于 java 语法,但对于 V++,如果两者同名,我应该使用什么将它们链接在一起?

我的代码中有 getter 和 setter 方法以及 2 个太长的构造函数,无法发布。

这是我的错误:

test.cpp:159: error: cannot declare member function ‘static float LocationData::computeCivIndex(std::string, int, int, float, float)’ to have static linkage
test.cpp: In static member function ‘static float LocationData::computeCivIndex(std::string, int, int, float, float)’:
test.cpp:161: error: ‘this’ is unavailable for static member functions

代码:

class LocationData
{
private:
string sunType;
int noOfEarthLikePlanets;
int noOfEarthLikeMoons;
float aveParticulateDensity;
float avePlasmaDensity;
public:
static float computeCivIndex(string,int,int,float,float);
};
static float LocationData::computeCivIndex(string sunType, int noOfEarthLikePlanets,int noOfEarthLikemoons, float aveParticulateDensity, float avePlasmaDensity)
{
this.sunType = sunType;
this.noOfEarthLikePlanets = noOfEarthLikePlanets;
this.noOfEarthLikeMoons = noOfEarthLikeMoons;
this.aveParticulateDensity = aveParticulateDensity;
this.avePlasmaDensity = avePlasmaDensity;
if(sunType == "Type O")
//and more for computation
}

最佳答案

static 声明延迟于 static 实现。静态实现意味着您的函数符号仅在实现它的文件中可用。

简单的去掉函数实现前的static。此外,静态函数是类函数,你不能访问其中类的非静态成员。这些是在没有对象实例的情况下使用的,因此,没有实例变量。

float LocationData::computeCivIndex(string sunType, int noOfEarthLikePlanets,int     noOfEarthLikemoons, float aveParticulateDensity, float avePlasmaDensity)
{
}

关于c++ - 使用静态方法编译时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12915038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com