关于C++的undeclared identifier!!!

//头文件如下:
#include <iostream>
using namespace std;
class rectangle //deF a class
{
public: //building func
HeadNum(int x,int y); //deC x,y
Result();

private:
int i;
int o;

};
rectangle::HeadNum(int x,int y){i=x;o=y;} //deF x,y
rectangle::Result(){cout<<"product:"<<i*o<<endl;}//get reS

//源文件如下

#include "Header1.h" //load .h file
int main()
{
rectangle rec; //REC=rec
cin>>rec.HeadNum(x); //press in num x(**BUG**)
cout<<"multiply\n";
cin>>rec.HeadNum(y); //press in y(**BUG**)
rec.Result();
return 0;
}

//问题是public里和外部已经定义了啊。问什么还说没定义?
E:\Program Files\Microsoft Visual Studio\MyProjects\1\Commence1\Source1.cpp(5) : error C2065: 'x' : undeclared identifier
E:\Program Files\Microsoft Visual Studio\MyProjects\1\Commence1\Source1.cpp(7) : error C2065: 'y' : undeclared identifier
Error executing cl.exe.

这是作用域的问题,建议楼主多看看书,多写代码。
X,Y 是类rectangle 的成员函数HeadNum的形参,也只是可以在 HeadNum内部使用。类rectangle 的其他成员函数都不可以引用。更不要书类外了。

cin>>rec.HeadNum(x);
这句也是有问题的,HeadNum(int,int)接受两个参数,你这样还是会报错的,

我想你的意思是这样的:

int main()
{
rectangle rec; //REC=rec
int a,b;
cin>>a>>b;
rec.HeadNum(a,b);
cout<<"multiply\n";
rec.Result();
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-20
是主函数当中的x和y没有定义,你在主函数当中重新定义就好了~~你定义的是HeadNum(int x,int y); 这个x和y只是函数内部的
第2个回答  2010-08-20
但是你的x,y是在哪里定义的呢?
而且你的HeadNum(int x,int y);函数是两个形参哟
第3个回答  2010-08-20
没有定义,前面的是形参参数,后面直接作为变量用。怎么行?
相似回答