c++的list能否在自定义类中使用

问题描述

c++的list能否在自定义类中使用

这是我的menusystem.h头文件,有的功能还没写完,我想在主菜单的b功能里面实现对这两个集合的遍历,我有另外两个头文件分别包含老师类和学生类。

list::iterator() its;
list::iterator() itt;
这两句会提示错误:
error C2146: syntax error : missing ';' before identifier 'its'
error C2501: 'its' : missing storage-class or type specifiers
error C2146: syntax error : missing ';' before identifier 'itt'
error C2535: 'int __thiscall MenuSystem::iterator(void)' : member function already defined or declaredd:vc6.0(绿色win8可用)program idevc++6.0myprojects课程设计menusystem.h(23) : see declaration of 'iterator'
error C2501: 'itt' : missing storage-class or type specifiers

/*

系统的核心类,通过该菜单系统实现所有功能,通过友元联系上老师类和学生类。

*/
#pragma once
#ifndef MENUSYSTEM_H
#define MENUSYSTEM_H
#include
#include

#include"student.h"
#include"teacher.h"
class Teacher;
class Student;
class SchoolPerson;
using namespace std;
class MenuSystem
{
public:
typedef list LISTS;
typedef list LISTT;
LISTS lists;
LISTT listt;
void showmenu()
{

    list<Student>::iterator() its;
    list<Teacher>::iterator() itt;
    cout<<"欢迎进入高校水电管理系统"<<endl;
    START:
    cout<<"请选择功能(输入数字):"<<endl;
    cout<<"a、录入用户信息"<<endl;
    cout<<"b、查询用户信息"<<endl;
    cout<<"c、查询未缴费名单"<<endl;
    cout<<"d、退出系统"<<endl;
    cin>>button;
    switch (button)
    {
        case 'a':
            cout<<"用户信息录入界面";
            cout<<"请输入S或者T选择录入学生信息还是老师信息输入其他返回主界面:";
            cin>>career;
            switch (career)
            {
                case 'S':
                    {
                        int swi=1;
                        while (swi==1)
                        {
                            Student *stu;
                            stu=new Student;
                            (*stu).set();
                            lists.push_front(*stu);
                            cout<<"输入1继续添加,输入其他退出添加。";
                            cin>>swi;
                        }
                    }
                    break;
                case 'T':
                    {
                        int swi=1;
                        while (swi==1)
                        {
                            Teacher *tea;
                            tea=new Teacher;
                            (*tea).set();
                            listt.push_front(*tea);
                            cout<<"输入1继续添加,输入其他退出添加。";
                            cin>>swi;
                        }
                    }
                    break;
                default:
                    goto START;
            }
            break;
        case 'b':
            {
                char button2;
                cout<<"用户信息查询"<<endl;
                cout<<"a、查询所有学生信息"<<endl;
                cout<<"b、查询所以老师信息"<<endl;
                cout<<"c、查询学生个人信息"<<endl;
                cout<<"d、查询老师个人信息"<<endl;
                cout<<"按其他键返回主菜单"<<endl;
                cin>>button2;
                switch (button2)
                {
                    case 'a':
                        {
                            for (its=lists.begin();its!=lists.end();its++)
                            {
                                (*its).print_information();
                                cout<<endl;
                            }
                        }
                    break;

                    case 'b':
                        {
                            for (itt=listt.begin();itt!=lists.end();itt++)
                            {
                                (*itt).print_information();
                                cout<<endl;
                            }
                        }
                    break;

                    case 'c':
                        {
                            int sign=0;
                            long snumber;
                            cout<<"请输入要查询的学生的学号:";
                            cin>>snumber;
                            for (its=lists.begin();its!=lists.end();its++)
                            {
                                if ((*its).getnumber()==snumber)
                                {
                                    cout<<"查询结果如下:"<<endl;
                                    (*its).print_information();
                                    sign=1;
                                }
                            }
                            if (sign==0)
                                cout<<"没有此用户!";
                        }
                    break;

                    case 'd':
                        {
                            int sign=0;
                            long tnumber;
                            cout<<"请输入要查询的老师的工号:";
                            cin>>snumber;
                            for (itt=lists.begin();itts!=listt.end();itt++)
                            {
                                if ((*itt).getnumber()==tnumber)
                                {
                                    cout<<"查询结果如下:"<<endl;
                                    (*itt).print_information();
                                    sign=1;
                                }
                            }
                            if (sign==0)
                                cout<<"没有此用户!";
                        }
                        break;
                    default:
                        goto START;
                }
            }
        case 'c':
            //调用没交费学生信息
            //调用没交费老师信息
            break;
        case 'd':
            exit(0);
        default:
            cout<<"错误的指令,请重新输入:"<<endl;
            goto START;
    }
}

private:
char button;
char career;
};
#endif

解决方案

list::iterator() its;
list::iterator() itt;
去掉括号。改为:

 list<Student>::iterator its;
 list<Teacher>::iterator itt;

解决方案二:

关于自定义类的在List中的查找和比较
C++自定义类中使用string变量问题
List对于自定义类型,使用contains

时间: 2024-10-29 20:42:50

c++的list能否在自定义类中使用的相关文章

MFC自定义类中数据怎样传递给文本框控件输出

问题描述 MFC自定义类中数据怎样传递给文本框控件输出 在MFC中,自定义了一个视频处理类,目的将处理后的每帧图像输出到picture控件显示并将产生的整型数据通过文本框控件输出.问题是不知怎样将控件变量同类中变量建立联系,使得类中数据可以输出. 解决方案 用ClassWizard去添加关联的成员变量 解决方案二: 鼠标右键点击控件,选择增加一个变量: 或者,直接使用 GetDlgItem(控件名)->SetWindowText() 也行. 解决方案三: 直接获取控件GetDlgItem,然后S

java基础-System.out.println()输出自定义类中的char[]变量

问题描述 System.out.println()输出自定义类中的char[]变量 大家好:我在编程时遇到system.out.println输出问题 public static void main(String[] args) { Solution sol=new Solution(); sol.tmp=new String(""12345600024402000"").toCharArray();//这里用toCharArray()是因为方程输入类型是char[

在WinForm,自定义类中添加 System.Timers.Timer控件,为什么不能正常进行

问题描述 在自定义类中加入System.Timers.Timertimergamebegin;System.Timers.Timertimersendpoker;在构造函数中:publicMyClass(){this.timergamebegin=newSystem.Timers.Timer(Desk.addpointtimes*1000);timergamebegin.Elapsed+=newSystem.Timers.ElapsedEventHandler(this.timergamebeg

修改自定义类中属性的可见性问题(动态增减类的属性个数)

问题描述 之前发了一个帖子问题描述的太简单了给大家造成了误解这里重新开贴详细说明出于项目要求需要定义一个属性可以动态增加的类(比如说定义一个截面类,包含形状.半径.长度.宽度四个属性,其中形状枚举圆形和矩形两种,选择圆形时显示半径属性不显示长宽属性,选择矩形时显示长宽属性不显示半径属性.也就是说利用PropertyGrid控件展示该类的属性是,当选择圆形时PropertyGrid可以显示2个属性,选择矩形时PropertyGrid则显示3个属性,无论2个属性还是3个属性对应的是同一个实例)于是在

如何在自定义类中调用控件

问题描述 publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}............publicclassTestMessageFilter:IMessageFilter{.............(2)}}大体的代码结构就是这样的,在form1窗体上里有一个contextmenustrip1控件,我想在(2)语句处调用contextmenustrip1让它显示,该怎么实现啊!TestMessageFilter是一

.net使用自定义类属性实例

 一般来说,在.net中可以使用Type.GetCustomAttributes获取类上的自定义属性,可以使用PropertyInfo.GetCustomAttributes获取属性信息上的自定义属性.   下面以定义一个简单数据库表的映射实体类来说明相关的使用方法,基于自定义类属性和自定义类中的属性的自定义属性,可以方便的进行类标记和类中属性的标记   创建一个类的自定义属性,用于标识数据库中的表名称,需要继承自Attribute类:   代码如下: [AttributeUsage(Attri

ExtJS 4.2 教程-03:使用Ext.define自定义类

转载自起飞网,原文地址:http://www.qeefee.com/extjs-course-3-define-classes ExtJS 4.2 教程-01:Hello ExtJS ExtJS 4.2 教程-02:bootstrap.js 工作方式 ExtJS 4.2 教程-03:使用Ext.define自定义类 ExtJS 4.2 教程-04:数据模型 ExtJS 4.2 教程-05:客户端代理(proxy) ExtJS 4.2 教程-06:服务器代理(proxy) ExtJS 4.2 教程

.net使用自定义类属性实例_实用技巧

一般来说,在.net中可以使用Type.GetCustomAttributes获取类上的自定义属性,可以使用PropertyInfo.GetCustomAttributes获取属性信息上的自定义属性.   下面以定义一个简单数据库表的映射实体类来说明相关的使用方法,基于自定义类属性和自定义类中的属性的自定义属性,可以方便的进行类标记和类中属性的标记   创建一个类的自定义属性,用于标识数据库中的表名称,需要继承自Attribute类: 复制代码 代码如下: [AttributeUsage(Att

Struts2框架,表单请求到action出错,貌似找不到自定义action类中的方法。

问题描述 Struts2框架,表单请求到action出错,貌似找不到自定义action类中的方法. 关键代码如下: ${Msg.sendUser.username } 上面代码的意思是:把${Msg.sendUser}提交到action,赋值给 action类属性message的sendUser.(sendUser数据类型是User对象) 请求后提示找不到action中的自定义方法,但是我表单中的值换成下面 的,变成赋值给message的属性sendUser的属性username,就能成功. 是