自定义的类中包含一个函数可以吗?

zzol 2004-12-23 09:31:03
我自定义了一个类:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#include "rbg.h"
#include "horizonangle.h"


class curve{

public:
double startp_x,startp_y,ZH_x,ZH_y;
double HY_x,HY_y,YH_x,YH_y;

void compute();
}
^^^^^^^^^^^^^^^^^^^^^^^^^^

结果显示rbg.h(2) : error C2065: 'a' : undeclared identifier等等
#include "rbg.h"是自己定义的一个函数,
是什么问题?

...全文
124 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cat_dog 2004-12-24
  • 打赏
  • 举报
回复
zzol():
你上面的最后一个参数也写错了double (*f)( double )
所以把函数定义改成 double romb(double a,double b,double eps,double (*f)(double))
就行了,其它的把你后面实现的接下去写就行了
zzol 2004-12-24
  • 打赏
  • 举报
回复
不会吧,浩强老师的《C语言程序设计》一书中就是这样写的。如果改成
double romb(double a,double b,double eps,double (*f)())
那么调用这个函数时,最后一个参数怎么写?假如要求X*X*X+3*X*X+1在[1,10]上的积分值,怎么调用该函数?
zzol 2004-12-23
  • 打赏
  • 举报
回复
rbg.h是一个积分的函数,在C条件下是完全通过,没有问题的。

#include <math.h>
double romb(a,b,eps,f)
double a,b,eps,(*f)();

{
int m,n,i,k;
double y[10],h,ep,p,x,s,q;

// 迭代初值
h=b-a;
y[0]=h*((*f)(a)+(*f)(b))/2.0;
m=1;
n=1;
ep=eps+1.0;

if(h==0)
return 0;


// 迭代计算
while ((ep>=eps)&&(m<=9))
{
p=0.0;
for (i=0;i<=n-1;i++)
{
x=a+(i+0.5)*h;
p=p+(*f)(x);
}

p=(y[0]+h*p)/2.0;
s=1.0;
for (k=1;k<=m;k++)
{
s=4.0*s;
q=(s*p-y[k-1])/(s-1.0);
y[k-1]=p;
p=q;
}

ep=fabs(q-y[m-1]);
m=m+1;
y[m-1]=q;
n=n+n;
h=h/2.0;
}

return(q);
}
cat_dog 2004-12-23
  • 打赏
  • 举报
回复
把rbg.h贴出来
liweiswin 2004-12-23
  • 打赏
  • 举报
回复
2楼正解。楼主代码没有贴全
sunlu_eric 2004-12-23
  • 打赏
  • 举报
回复
用友员不就可以了么???
Barrypanxmeng 2004-12-23
  • 打赏
  • 举报
回复
楼主是不是应该把rbg.h中的文件内容贴出来,我是说可能
#include "rbg.h"
#include "horizonangle.h"
文件中有错误
类定义后面要有一个“;”
class curve
{
...
};
dudu妈 2004-12-23
  • 打赏
  • 举报
回复
自定义得类中包含一个函数是可以得。可能你的函数有点问题
hxblvc 2004-12-23
  • 打赏
  • 举报
回复
去"rbg.h"里边找错.
snow810211 2004-12-23
  • 打赏
  • 举报
回复
应该不行,成员函数不是普通函数,普通函数不能访问protected成员,而成员函数可以
BluntBlade 2004-12-23
  • 打赏
  • 举报
回复
未声明的标识符'a'
cat_dog 2004-12-23
  • 打赏
  • 举报
回复
第二句,也就下面那句不能那样写
double romb(a,b,eps,f)
a必须有类型
double romb(a,b,eps,f)
double a,b,eps,(*f)();
可以改成
double romb(double a,double b,double eps,double (*f)())

64,653

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧