gpt4 book ai didi

c++ - 对 `Init::b' 的 undefined reference

转载 作者:行者123 更新时间:2023-11-28 00:17:28 26 4
gpt4 key购买 nike

我在这里上课

#include<cstdlib>
#include<time.h>

struct between{
double min;
double max;
};

class Init{



public:
static const int args=2;
static between* b;

static double function(double i[]){
return abs(i[0]*i[1]);
return (25*i[0]*i[0]-5*i[0]+3);
}

static double abs(double d){
return (d>0?d:-d);
}

};

类包括:

#include "Init.cpp"
#include<iostream>

using namespace std;
class Chunk{
public:
double values[Init::args];
double res;
static Chunk* sex(Chunk* c1,Chunk* c2){
Chunk* c=new Chunk();
for(int a=0;a<Init::args;a++){
double t=getRand();
c->values[a]=c1->values[a]*t+c2->values[a]*(1.0-t);
}
return c;

}

static double getRand(){
double d=rand()/(double)RAND_MAX;
return d;
}

double getResult(){

res=Init::function(values);
}

static Chunk* generateChunk(){
Chunk* c=new Chunk();
for(int a=0;a<Init::args;a++){
double t=getRand();
c->values[a]=Init::b[a].min*t+Init::b[a].max*(1.0-t);//ERROR HERE!
}
return c;
}

};

我得到错误:

/home/oneat/NetBeansProjects/wearethechampions/Chunk.cpp:33: 未定义对“Init::b”的引用

知道为什么吗?

最佳答案

错误是由 Init 类中未定义的静态变量引起的。

你声明了两个这样的变量:

static const int args = 2;

这是声明类内初始化——常量整数允许在类体内初始化。此类成员不需要额外定义,除非您想将它们用作 lvalue .

static between* b;

这只是声明b 没有在任何地方定义。在包含属于 Init 类的方法定义的源文件 (.cpp) 中,添加以下行(您通常希望对所有指针进行零初始化):

between* Init::b = NULL; //In pre-C++11 code

between* Init::b = nullptr; //In C++11-compliant code

关于c++ - 对 `Init::b' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29349242/

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