类指针,为什么说我没定义啊

otianna 2009-01-15 09:21:28

#include <iostream>
using namespace std;
class calculator
{
public:
int num1,num2,total;
void accept(int,int);
void add();
void display();
};
int main()
{
calculator *ptr;
ptr=new calculator;
ptr->accept(20,30);
cout<<"num1="<<num1<<endl;
cout<<"num2="<<num2<<endl;
ptr->add();
ptr->display();
ptr->num1=30;
ptr->num2=40;
ptr->add();
ptr->display();
delete ptr;
return 0;
}
void calculator::accept(int number1,int number2)
{
num1=number1;
num2=number2;
total=0;
}
void calculator::add()
{
total=num1+num2;
}
void calculator::display()
{
cout<<"这两个数的和是:"<<total<<endl;
}

提示未声明num1,num2可是在公共里面不是声明了吗?
还有计算得出
num1=4345384
num2=1245052
能帮我解释一下吗?
...全文
115 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gallanthunter 2009-01-15
  • 打赏
  • 举报
回复
类的成员只能通过类的对象去访问。
echo_love 2009-01-15
  • 打赏
  • 举报
回复
类的成员,你当然要通过类的对象或者类名去访问了
jackzhhuang 2009-01-15
  • 打赏
  • 举报
回复
访问非静态(static)成员数据必须经过对象。
otianna 2009-01-15
  • 打赏
  • 举报
回复
非常感谢大家的回答,按四楼的做法调试正常了,谢谢大家。
waizqfor 2009-01-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 otianna 的回复:]
那应该在哪里定义呢?我在主函数里定义num1,num2结果说我使用未初始化的局部变量,将导致不可预知的后果,虽然后面结果出来了。
[/Quote]
用对象去访问成员
waizqfor 2009-01-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 otianna 的回复:]
那应该在哪里定义呢?我在主函数里定义num1,num2结果说我使用未初始化的局部变量,将导致不可预知的后果,虽然后面结果出来了。
[/Quote]
用对象去访问成员
otianna 2009-01-15
  • 打赏
  • 举报
回复
那应该在哪里定义呢?我在主函数里定义num1,num2结果说我使用未初始化的局部变量,将导致不可预知的后果,虽然后面结果出来了。
xiaoyisnail 2009-01-15
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
class calculator
{
public:
int num1,num2,total;
void accept(int,int);
void add();
void display();
};
int main()
{
calculator *ptr;
ptr=new calculator;
ptr->accept(20,30);
cout<<"num1="<<ptr->num1<<endl;//改成这样
cout<<"num2="<<ptr->num2<<endl;//改成这样
ptr->add();
ptr->display();
ptr->num1=30;
ptr->num2=40;
ptr->add();
ptr->display();
delete ptr;
return 0;
}
void calculator::accept(int number1,int number2)
{
num1=number1;
num2=number2;
total=0;
}
void calculator::add()
{
total=num1+num2;
}
void calculator::display()
{
cout<<"这两个数的和是:"<<total<<endl;
}
lightnut 2009-01-15
  • 打赏
  • 举报
回复
cout<<"num1="<<ptr->num1<<endl;
cout<<"num2="<<ptr->num2<<endl;
nineforever 2009-01-15
  • 打赏
  • 举报
回复
num1和num2是类的成员,main当然不存在啦
还有你既然有编译错误,怎么能看到num1和num2的值的。。。
xiaoyisnail 2009-01-15
  • 打赏
  • 举报
回复
num1,num2是类的成员,作用域不是全局的,不能这样直接访问

65,210

社区成员

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

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