#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函数,大神指教下~
自己定义了一个List类,里面有一个结构数组,该怎么通过类的函数访问结构数组里面的成员
答案:1 悬赏:60 手机版
解决时间 2021-02-20 02:49
- 提问者网友:萌卜娃娃
- 2021-02-19 16:28
最佳答案
- 五星知识达人网友:孤老序
- 2021-02-19 17:45
主要有两个错误:
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,在这个类之外的任何地方都不能使用,包括派生类中。
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,在这个类之外的任何地方都不能使用,包括派生类中。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯