C++ 对'Init::b';
我在这里上课C++ 对'Init::b';,c++,netbeans,linkage,C++,Netbeans,Linkage,我在这里上课 #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]
#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);
}
};
#包括
#包括
结构之间{
双分钟;
双峰;
};
类初始化{
公众:
静态常量int args=2;
在*b之间的静态;
静态双功能(双i[]{
返回abs(i[0]*i[1]);
返回(25*i[0]*i[0]-5*i[0]+3);
}
静态双abs(双d){
返回(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;
}
};
#包括“Init.cpp”
#包括
使用名称空间std;
类块{
公众:
双值[Init::args];
双res;
静态区块*性别(区块*c1,区块*c2){
Chunk*c=新Chunk();
对于(int a=0;avalues[a]=c1->values[a]*t+c2->values[a]*(1.0-t);
}
返回c;
}
静态双getRand(){
双d=rand()/(双)rand_MAX;
返回d;
}
double-getResult(){
res=Init::函数(值);
}
静态块*generateChunk(){
Chunk*c=新Chunk();
for(int a=0;avalues[a]=Init::b[a].min*t+Init::b[a].max*(1.0-t);//此处出错!
}
返回c;
}
};
我得到一个错误:
/home/oneat/NetBeansProjects/wearethechampions/Chunk.cpp:33:对'Init::b'的未定义引用
知道原因吗?您需要添加一个CPP文件:
between* Init::b = NULL ;
您在标题中定义了b,但没有在任何对象中定义静态对象的主体
编辑(因为您只有.cpp文件)
在类外定义b值
也就是说,在Init类声明之后,添加以下行:
between* Init::b=NULL;
您需要添加一个CPP文件:
between* Init::b = NULL ;
您在标题中定义了b,但没有在任何对象中定义静态对象的主体
编辑(因为您只有.cpp文件)
在类外定义b值
也就是说,在Init类声明之后,添加以下行:
between* Init::b=NULL;
您需要添加一个CPP文件:
between* Init::b = NULL ;
您在标题中定义了b,但没有在任何对象中定义静态对象的主体
编辑(因为您只有.cpp文件)
在类外定义b值
也就是说,在Init类声明之后,添加以下行:
between* Init::b=NULL;
您需要添加一个CPP文件:
between* Init::b = NULL ;
您在标题中定义了b,但没有在任何对象中定义静态对象的主体
编辑(因为您只有.cpp文件)
在类外定义b值
也就是说,在Init类声明之后,添加以下行:
between* Init::b=NULL;
错误是由类
Init
中未定义的静态变量引起的
您声明了两个这样的变量:
static const int args = 2;
这是类初始化中的声明和——允许在类主体内初始化常量整数。此类成员不需要额外定义,除非您想将其用作
这只是声明,b
在任何地方都没有定义。在包含属于Init
类的方法定义的源文件(.cpp
)中,添加以下行(您通常希望零初始化所有指针):
或
错误是由类
Init
中未定义的静态变量引起的
您声明了两个这样的变量:
static const int args = 2;
这是类初始化中的声明和——允许在类主体内初始化常量整数。此类成员不需要额外定义,除非您想将其用作
这只是声明,b
在任何地方都没有定义。在包含属于Init
类的方法定义的源文件(.cpp
)中,添加以下行(您通常希望零初始化所有指针):
或
错误是由类
Init
中未定义的静态变量引起的
您声明了两个这样的变量:
static const int args = 2;
这是类初始化中的声明和——允许在类主体内初始化常量整数。此类成员不需要额外定义,除非您想将其用作
这只是声明,b
在任何地方都没有定义。在包含属于Init
类的方法定义的源文件(.cpp
)中,添加以下行(您通常希望零初始化所有指针):
或
错误是由类
Init
中未定义的静态变量引起的
您声明了两个这样的变量:
static const int args = 2;
这是类初始化中的声明和——允许在类主体内初始化常量整数。此类成员不需要额外定义,除非您想将其用作
这只是声明,b
在任何地方都没有定义。在包含属于Init
类的方法定义的源文件(.cpp
)中,添加以下行(您通常希望零初始化所有指针):
或
我这里没有h文件,然后给b分配一些初始值。我假设第一个是头文件。如果我为null,我会得到。Init.cpp:15:23:错误:非整数类型的静态数据成员的类内初始化无效“between*”请参阅我刚才所做的编辑。你需要在类外分配值。我这里没有h文件,然后分配me b的初始值。我假设第一个值是头文件。如果我为null,我会得到。Init.cpp:15:23:错误:非整数类型的静态数据成员的类内初始化无效“between*”请参阅我刚才所做的编辑。您需要在类外指定值。我这里没有h文件,然后为b指定一些初始值。我假设第一个是头文件。如果我为null,我会得到.Init.cpp:15:23:错误:非整数类型的静态数据成员的类内初始化无效“between*”请参阅我刚才所做的编辑。您需要在类外指定值。我这里没有h文件,然后为b指定一些初始值。我假设第一个