永发信息网

自己定义了一个List类,里面有一个结构数组,该怎么通过类的函数访问结构数组里面的成员

答案:1  悬赏:60  手机版
解决时间 2021-02-20 02:49
#ifndef LIST_H_
#define LIST_H_
const int NameLen=40;
struct tv_program
{
char name[NameLen];
int hour;
int min;
};
typedef tv_program Item;

class List
{
private:
static const int Size=5;
Item list[Size];
int count;
public:
List();
void add(Item item);
void showlist();
bool isempty();
bool isfull();
void visit(void (*pf)(Item &));
};
#endif
这是类声明
#include"List.h"
#include<iostream>
using namespace std;;

List::List()
{
count=0;
}
bool List::isfull()
{
return count==Size;
}
bool List::isempty()
{
return count==0;
}
void List::add(Item item)
{
list[count]=item;
count++;
}
void List::showlist()
{
for (int i=0;i<count;i++)
{
cout<<"#"<<i+1<<endl;
cout<<"Program: "<<(*this)[i].name<<endl;
cout<<"Time: "<<(*this)[i].hour<<": "<<(*this)[i].min<<endl;
}
}
void List::visit(void (*pf)(Item & item))
{
for (int i=0;i<Size;i++)
(*pf)((*this)[i]);
}
这是类函数定义
麻烦大神帮我看一下showlist()函数和visit函数,大神指教下~
最佳答案
主要有两个错误:
1. 要访问成员,直接使用成员的变量名就可以了,数组也一样,也就是说,要将(*this)[]改为list[]
要明白this是指向这个类的实例的指针,所以*this是一个List类,它有一个Item类型的数组成员list,要访问这个数组成员,应该是使用list。
2.
for (int i=0;i<Size;i++)
(*pf)((*this)[i]);

中,最好是判断i<count,因为当count<Size时,你不知道后面几个里面有啥。

还有两个建议:
1. 数组神马的,都要在构造函数中初始化一下。
2. 成员变量最好定义为protected,不要定义为private以便扩真。
private是说只有这个类自己知道的,他的派生类都不知道的,也就是说,如果将成员(变量或函数)定义为private,在这个类之外的任何地方都不能使用,包括派生类中。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
【仰望星空作文】仰望星空作文
好邻居购物广场长虹总店在什么地方啊,我要过
留图不留种,菊花万人捅 的真正出处?不要不
酷狗中的听音识曲怎么用不了,是不是录音权限
请问,人为什么不能缺少淀粉?,人为什么不能缺
王者荣耀,赠送皮肤给好友的问题,就是新加的
一嗨租车(金鹰海市洋世界送车点)地址有知道的
复合岩棉板检测标准是多少
C4H6O6的结构简式是什么?他的核磁共振氢谱会
请问,4区现在玛那什么价格?,几年没玩了,最
到了广州白云机场怎么去长隆欢乐世界附近住的
带“诚”和“聪”的成语,谐音也成
许昌天印科贸有限公司在哪里啊,我有事要去这
已知点P是抛物线y2=2x上的一个动点,则到点A(3
高中生物显微镜观察酵母菌种群数量,其中酵母
推荐资讯
我真是弱爆了
如何测试免疫力
馨语花艺地址在哪,我要去那里办事
守望先锋找不到兼容的显卡设备怎么办 解决方
∫dx/(5-3x)∧3=
美国大平原的人与华北平原的人生产生活会有哪
风格班纳服饰地址在什么地方,想过去办事
关于美版htc g10即att A9191
进气冬菇和集气风箱的具体区别,要详细
从就业看,法学学生考研选华政还复旦?哪个更
如图为女性生殖器官示意图,请据图回答:(1
黄疸出血型钩体病最常见死亡原因是A.肝功能衰
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?