问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++编译报错3

发布网友 发布时间:2023-11-18 22:15

我来回答

4个回答

热心网友 时间:2024-11-30 15:41

上机调试并改正下面的程序,分析原因,写出实验报告。

要求:将对象t1的三个成员变量hour, minute, second设置为10, 20, 30;通过指针变量p将将对象t2的三个成员变量hour, minute, second设置为11, 21, 31;通过引用变量t将将对象t3的三个成员变量hour, minute, second设置为12, 22, 32。

程序代码如下:

class Time

{

  private:

      int hour, minute, second;

  public:

      void SetTime()

       {  hour = 10;  minute = 20; second = 30; }

      void SetTime(int h, int m, int s);

}

Time:: SetTime(int h, int m, int s)

{ hour = h;  minute = m; second = s; }

void main()

{   Time t1, t2, t3, *p;

t1. hour = 10;  t1. minute = 20; t1. second = 30; 

p = t2;

    p-> hour = 11; p-> minute = 21; p-> second = 31; 

Time &t;

t = t3;

    t.SetTime(12, 22, 32);

 } 

1.error C2628: 'Time' followed by 'void' is illegal (did you forget a ';'?)

c++不同于java,在定义类的时候在}后面一定要加上一个;以表示类得结束

2.error C2248: 'hour' : cannot access private member declared in class 'Time'

不能访问类内的私有成员,在这里我改变了成员变量的访问权限,改为public类型的

  private:

      int hour, minute, second;

->

  public:

      int hour, minute, second;

3.为了测试是否改变了相应的数值,在这里我加入了输入输出流操作

#include<iostream>

using namespace std;

并且定义的输出函数

  void PrintElem()

  {

cout<<"hour="<<hour<<endl;

cout<<"minute="<<minute<<endl;

cout<<"second="<<second<<endl;

  }

同时把下面的操作事先注释掉,一面影响之前的调试

4. #include<iostream>

using namespace std; 

class Time

{

  public:

      int hour, minute, second;

  public:

     // void SetTime()

     // {  hour = 10;  minute = 20; second = 30; }

      void SetTime(int h, int m, int s);

  void PrintElem()

  {

cout<<"hour="<<hour<<endl;

cout<<"minute="<<minute<<endl;

cout<<"second="<<second<<endl;

  }

};

void Time::SetTime(int h, int m, int s)

{

hour = h;

minute = m;

second = s;

}

void main()

{  

Time t1;

t1. hour = 10;  t1. minute = 20; t1. second = 30; 

t1.PrintElem();

//p = t2;

    //p-> hour = 11; p-> minute = 21; p-> second = 31; 

//Time &t;

//t = t3;

//t.SetTime(12, 22, 32);

}

这样实现了第一个问题

5. error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class Time' (or there is no acceptable conversion)

不能直接把一个类的对象放入指针,但是可以传一个引用过去

p = &t2;

这样是把这个对象的地址放入了指针,然后对成员变量进行访问

6. error C2530: 't' : references must be initialized

在定义地址指向的时候要让他指向一个变量或者类的对象

Time &t = t3;

这样以后就可以实现了

下面是改好的正确的例子

#include<iostream>

using namespace std; 

class Time

{

  public://改变成员变量的访问类型

      int hour, minute, second;

  public:

     void SetTime()

 {  hour = 10;  minute = 20; second = 30; }

      void SetTime(int h, int m, int s);

  void PrintElem()

  {

cout<<"hour="<<hour<<endl;

cout<<"minute="<<minute<<endl;

cout<<"second="<<second<<endl;

  }

};

void Time::SetTime(int h, int m, int s)

{

hour = h;

minute = m;

second = s;

}

void main()

{  

Time t1,t2,t3,*p;

t1. hour = 10;  t1. minute = 20; t1. second = 30; 

t1.PrintElem();

p = &t2;                    //用p指向t2的地址

    p-> hour = 11; p-> minute = 21; p-> second = 31;

t2.PrintElem();

Time &t = t3;

    t.SetTime(12, 22, 32);

t3.PrintElem();

 }

输出结果为:

热心网友 时间:2024-11-30 15:42

那个*p不能用 类的private成员 不能你这么初始化的

热心网友 时间:2024-11-30 15:42

#include <iostream>
using namespace std ;

class Time
{
private:
int hour, minute, second;
public:
void SetTime()
{
hour = 10; minute = 20; second = 30;
}
void SetTime(int h, int m, int s);
}; //ERROR1 少;

void Time::SetTime(int h, int m, int s) //ERROR2 少void
{
hour = h; minute = m; second = s;
}

void Time::SetTime(int h, int m, int s) //ERROR2 少void
{
hour = h; minute = m; second = s;
}

int main()
{
/***ERROR3 : 私有变量不能在这里使用
Time t1, t2, t3, *p;
t1. hour = 10; t1. minute = 20; t1. second = 30;
p = t2; //ERROR4 指针变量赋值错误,应加&
p-> hour = 11; p-> minute = 21; p-> second = 31;
*****/
Time t1, t2, t3, *p;
t1.SetTime(10, 20, 30);
p = &t2;
p->SetTime(11, 21, 31);

//Time &t; ERROR5不能这样使用
//t = t3;
Time &t=t3; //声明引用变量,必须初始化
t.SetTime(12, 22, 32);
return 0;
}

热心网友 时间:2024-11-30 15:43

class Time
{
private:
int hour, minute, second;
public:
void SetTime()
{ hour = 10; minute = 20; second = 30; }
void SetTime(int h, int m, int s);
}

Time:: SetTime(int h, int m, int s)
{ hour = h; minute = m; second = s; }

void main()
{
Time t1, t2, t3, *p;
t1. hour = 10; t1. minute = 20; t1. second = 30; //这里有错误,Time的成员变量的访问权限是private,不能直接访问
p = t2;//p是Time类型的指针,而t2是Time类型,一个是Time指针类型,一个是Time类型,类型不匹配
p-> hour = 11; p-> minute = 21; p-> second = 31; //这个和第一个错误是一样的,不能直接访问private成员
Time &t;//引用必须初始化,而不能仅仅是声明,应该改成Time& t = t3;
t = t3;
t.SetTime(12, 22, 32);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
三角蟾应该放在吧台的左前方还是右前方 江西省普通高中学生综合素质优秀自我评价范文 江西省余干中学基础设施 江西中学生综合素质评价怎么写 南昌市有什么高中是可以住校的啊 江西省上高中学校园环境 南昌哪些高中有宿舍 辛未 庚寅 丁巳 辛丑 男命,婚姻怎么样,什么时候才能结婚? 辛未 辛丑 乙酉日 酉时命运如何? 谈谈你对中医的认识 c++编译出错是怎么回事? 一年内第二次修改技巧 玩游戏的时候键盘失灵125 小三郎和亚玛多的精灵有哪些?8 机场晚上可以过夜吗?14 煮菱角能用砂锅煮吗 干菱角煮汤用什么锅好 如何用matlab解答下列问题? 武汉汉阳造文化产业投资有限公司怎么样? 如何给裸机安装应用软件2 从厚街车站到珠海拱北车站要多少时间? 家里水龙头坏了可以找物业维修吗 盐城驾车到无锡央视无锡影视基地省时路线推荐 什么键盘玩游戏比较耐用3 游戏机械键盘推荐36 从东莞厚街汽车站怎么去广州珠海区会展东路 联想启天m4300 i5如何重装系统2 转转上买东西说私聊,在qq上发了一个链接,说是转转上的,点击...31 想知道: 珠海市 从北京师范大学附属中学到中信银行珠海分行怎么坐公交... 民法典买卖合同传真是否有效 我是用华为手机,今天不知道干嘛部落冲突用无线登不上用流量就可... 部落冲突,昨天还玩得好好的,今天就进不去了,怎么回事,看图 爱u女性私护是什么东西53 爱u女性私护是什么东西53 一把卷尺3.4元,比一根跳绳贵1.2元。买一根跳绳和一把卷尺... 万亿安邦保险集团宣布解散并清算,公司破产的根源是什么?2 游戏键盘手机版怎么才能让键盘在游戏中出来?22 东莞市厚街镇汽车站有没有到珠海香洲的车 是不是卖耳环,耳钉的地方都可以打耳洞? 有没有一种耳挂式耳环,不用打耳洞5 天津哪里有卖不用打耳洞的耳环 律政俏佳人1结尾时的曲子,就是毕业典礼时的那首歌是什么歌?3 爱U到底怎么样,女性私护好不好用6 类似秘社的美剧 青春的 校园的 (美国电影也行)10 请介绍几部类似于《美丽心灵的永恒阳光》的电影2 我先是淘宝上遇到叫加QQ先转账.然后给快递单.你们遇到过吗是...2 联想笔记本Z560 i3 m350 2G内存可以安64位WI... 手机玩了部落冲突后就没网络信号了 平面系数是指使用面积占建筑面积的比例,一般楼房是不是都大于1啊? 爱U女性私护的功效有哪些,有没有副作用