c++程序出错了 'mult' : is not a member of '`global namespace'

#include<iostream.h>classFactorial{private:intn;public:Factorial(inta){n=a;}intmulti(... #include <iostream.h>

class Factorial
{

private:
int n;
public :
Factorial(int a )
{
n=a;

}
int multi();
void print ()
{
cout<<n<<"!="<<multi()<<endl;

}

};

int Factorial()::multi()
{
for (int i=0,s=1;i<=n;i++)
s=s*i;
return s;

}
int main()
{
int a;
cin>>a;
Factorial A(a);
A.print();

}
展开
 我来答
小呆小呆2010
2012-07-04 · TA获得超过426个赞
知道小有建树答主
回答量:150
采纳率:100%
帮助的人:71.2万
展开全部
int Factorial()::multi() //这一句错了
{
for (int i=0,s=1;i<=n;i++)
s=s*i;
return s;

}

在C++中::符号代表范围限定作用,一般符号前面是类的名称,符号后面是成员函数的名称。上面的程序中,::符号前面明显不是类的名字而是一个函数,编译器于是把它当成命名空间的名字,判定multi()是命名空间的成员函数,这样当然是错的。本来就是写错了。
匿名用户
2012-07-04
展开全部
int Factorial()::multi()
{
for (int i=0,s=1;i<=n;i++)
s=s*i;
return s;
}
改为:
int Factorial::multi()
{
int s = 1;
for ( int i = 1; i <= n; ++i )
{
s = s * i;
}
return s;
}
三个问题:
一、在类定义外定义成员函数格式为:
返回类型 类名::成员函数名()
例如: int Factorial::multi()
二、循环的 s 变量必须提到外面,才能 return,循环内变量 s 在循环结束以后将被销毁,因此无法 return s;

三、循环的 i 变量的值应为 1,而不是 0。如果为 0,结果全部为 0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaot1021
2012-07-04 · TA获得超过326个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:235万
展开全部
int Factorial()::multi() 应该是:
int Factorial::multi()

这是类外声明的固定格式。其实意思是说multi()这个函数是类Factorial的,所以是不用在Factorial后面加()的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友79f44e646
2012-07-04
知道答主
回答量:10
采纳率:0%
帮助的人:1.6万
展开全部
int Factorial()::multi() 应该是:int Factorial::multi()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qwyybd001
2012-07-04
知道答主
回答量:37
采纳率:0%
帮助的人:10.6万
展开全部
大傻瓜傻瓜
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式