gpt4 book ai didi

c++ - main.cpp : function in library "not declared in this scope", 错误但实际上是

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

我寻求帮助,因为我已经阅读了大量类似的问答,但实际上没有一个对我有帮助。

我编写了一个库 (libreria.h),其中包含“libreria.cc”和一个 main.cpp。一切似乎都很好,但是当我尝试编译时(我在 Ubuntu 终端上进行编译),它说:“未在此范围内声明 integral_area”。

我的代码应该计算数学函数下面积的均值和方差(实际上是该函数的积分值)。

明确地说,如果我将单个函数放在主要函数之上,代码就可以工作。当我尝试将它们放入外部库时出现问题。

这是代码(我将 var 名称从意大利语更改为英语,如果有一些打字错误请不要介意,因为原始代码没有它们。我检查了将近十亿次。问题是其他地方):

libreria.h

#ifndef libreria_h
#define libreria_h

class libreria
{
public:
~libreria();

double random ();
double randomrange (double xmin, double xmax);

double matfunc(double x);

double integral_area(double xmin, double xmax,double ymin, double ymax);


private:

double x;
double xmin;
double xmax;
double ymin;
double ymax;
int N;
};
#endif

libreria.cc

#include "libreria.h"
#include <iostream>
#include <cstdlib>
using namespace std;


double libreria::random (){

return (rand() / (1.*RAND_MAX));
}

double libreria::randomrange (double xmin, double xmax){

return (xmin + (xmax-xmin) * rand() / (1.*RAND_MAX));
}

double libreria::matfunc(double x){

return (exp(-1*x*x*4));
}

double libreria::integral_area(double xmin,double xmax,double ymin,double ymax){
double x = 0.;
double y = 0.;
do {
x= randomrange(xmin,xmax);
y= randomrange(ymin,ymax); }while(y > matfunc(x));
return(x);
}

libreria::~libreria(){ //do nothing
}

main.cpp

#include <cstdlib>
#include <iostream>
#include <ctime>
#include <iomanip>
#include <math.h>
#include "libreria.h"
#include "libreria.cc"
using namespace std;

int main () {

srand(time(NULL));

double ax,bx,ay,by; // [ax,by] [ay,by]
double N,p;
double mean=0,meanq=0,variance=0;

cin >> N;

cin >> ax >> bx;

cin >> ay >> by;

for(int i=1; i<=N; i++){

p = integral_area(ax,bx,ay,by);
cout << "Val " << i << ": " << setprecision(2) << p << endl;
mean+=p;
meanq+=(p*p);

p=0;
}


mean=mean/N;
cout << "Mean is: " << setprecision(2) << mean << endl;

meanq=meanq/N;
variance=(meanq- (mean*mean));
cout << "Variance is: " << setprecision(2) << variance << endl;
}

最佳答案

libreria 是一个类,您还没有声明它的一个实例。您需要执行以下操作:

libreria l; // at the top

// rest of code.....
l.integral_area(ax,bx,ay,by);

关于c++ - main.cpp : function in library "not declared in this scope", 错误但实际上是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42110226/

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