| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 882 人关注过本帖
标题:
只看楼主 加入收藏
wuyushuai521
Rank: 2
等 级:论坛游民
帖 子:80
专家分:47
注 册:2012-10-9
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:13 
各位同仁好:
       在下请教一下关于类的问题。把类的定义和说明放到哪里,在main函数中就可以只用一个头文件就可以调用它们,从而不必在main函数中编写它们的定义和说明。谢谢
搜索更多相关主题的帖子: 同仁 
2012-10-28 10:27
小小小火柴
Rank: 5Rank: 5
来 自:江西赣州
等 级:职业侠客
威 望:3
帖 子:141
专家分:337
注 册:2012-9-28
收藏
得分:5 
  放在类里面啊!你写的类函数就放在类的public下!调用只要在主函数main中就可以完成!建议您多看看书!

   好好学习!
2012-10-28 10:56
wuyushuai521
Rank: 2
等 级:论坛游民
帖 子:80
专家分:47
注 册:2012-10-9
收藏
得分:0 
我这本教材上没有相关例题。。。我自己编了一个类的程序,麻烦您把详细操作过程告诉我,非常谢谢。
class cashregister
{
public:
    int getcurrentbalance() const;
    void acceptamount(int amount);
    cashregister(int cashin=500);
private:
    int cashonhand;
};

class dispensertype
{
public:
    int getnoofitems() const;
    int getcost() const;
    void makesale();
    dispensertype(int setnoofitems=50, int setcost=50);
private:
    int numberofitems;
    int cost;
};

#include <iostream>
#include "cashregister.h"


using namespace std;

int cashregister::getcurrentbalance() const
{
    return cashonhand;
}

void cashregister::acceptamount(int amount)
{
    cashonhand+=amount;
}

cashregister::cashregister(int cashin)
{
    if(cashin>=0)
        cashonhand=cashin;
    else
        cashonhand=500;
}

#include <iostream>
#include "dispensertype.h"

using namespace std;

int dispensertype::getnoofitems() const
{
    return numberofitems;
}

int dispensertype::getcost() const
{
    return cost;
}
void dispensertype::makesale()
{
    numberofitems--;
}
dispensertype::dispensertype(int setnoofitems, int setcost)
{
    if(setnoofitems>=0)
        numberofitems=setnoofitems;
    else
        numberofitems=50;

    if(setcost>=0)
        cost=setcost;
    else
        cost=50;
}


#include <iostream>
#include "cashregister.h"
#include "dispensertype.h"

using namespace std;

void showselection();
void sellproduct(dispensertype& produce, cashregister& pcounter);

int main()
{
    cashregister counter;
    dispensertype candy(100,50);
    dispensertype chips(100,65);
    dispensertype gum(75,45);
    dispensertype cookies(100, 85);


    int choice;

    showselection();

    cin>>choice;

    while(choice!=9)
    {
        switch(choice)
        {
        case 1: sellproduct(candy, counter);break;
        case 2: sellproduct(chips, counter);break;
        case 3: sellproduct(gum, counter);break;
        case 4: sellproduct(cookies, counter);break;
        default: cout<<"invalid selection."<<endl;
        }
        showselection();
        cin>>choice;
    }
    return 0;
}

void showselection()
{
    cout<<"***welcome to shelly's candy shop***"<<endl;
    cout<<"TO select an item, enter"<<endl;
    cout<<"1 for candy"<<endl;
    cout<<"2 for chips"<<endl;
    cout<<"3 for gum"<<endl;
    cout<<"4 for cookies"<<endl;
    cout<<"9 to exit"<<endl;
}

void sellproduct(dispensertype& product, cashregister& pcounter)
{
    int amount1;
    int amount2;

    if(product.getnoofitems()>0)
    {
        cout<<"please deposit "<<product.getcost()<<"cents"<<endl;
        cin>>amount1;

        if(amount1<product.getcost())
        {
            cout<<"please deposit another"<<product.getcost()-amount1<<"cents"<<endl;
            cin>>amount2;
            amount1+=amount2;
        }

        if(amount1>=product.getcost())
        {
            pcounter.acceptamount(amount1);
            product.makesale();
            cout<<"collect your item at the bottom and enjoy."<<endl;
        }
        else
            cout<<"the amount is not enough."<<"collect what you deposited."<<endl;
        cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-"<<endl;
        cout<<endl;
    }
    else
        cout<<"sorry, this item is sold out"<<endl;
}



2012-10-28 13:10
wuyushuai521
Rank: 2
等 级:论坛游民
帖 子:80
专家分:47
注 册:2012-10-9
收藏
得分:0 
我的意思是如何让类的说明和定义在main函数中不显示出来,只加上头文件:
#include "cashregister.h"
#include "dispensertype.h"
就能够调用这它们。

请高手指点,谢谢了。我学c++到这,卡这了。。
2012-10-28 15:46
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
收藏
得分:10 
cashregister.h和dispensertype.h,我就用a.h,b.h代替了
#ifndef A_H
#define A_H
//下面就是定义你的类
class a
{

}
#endif
//最后把文件保存为a.h即可。b.h类似

这样主要在.c 文件中包含.h文件,即可操作
2012-10-28 16:53
wuyushuai521
Rank: 2
等 级:论坛游民
帖 子:80
专家分:47
注 册:2012-10-9
收藏
得分:0 
我把步骤给您说一下,麻烦您看对不对,谢谢。
由于有些截图,所以我放到了wps文档里面。还要多费心你看看对不对。
类.zip (43.47 KB)
2012-10-28 17:40
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
收藏
得分:0 
看了,结构上没问题!!
2012-10-28 18:12
wuyushuai521
Rank: 2
等 级:论坛游民
帖 子:80
专家分:47
注 册:2012-10-9
收藏
得分:0 
编译时,还是提示:C:\Documents and Settings\wys\桌面\c++\继承.cpp(3) : fatal error C1083: Cannot open include file: 'rectangle.h': No such file or directory
我改正了一下,把详细步骤放到wps中了,麻烦您再看一下。谢谢。
类.zip (80.29 KB)
2012-10-28 19:32
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
收藏
得分:0 
回复 8楼 wuyushuai521
类.rar (79.52 KB)
2012-10-29 07:57
wuyushuai521
Rank: 2
等 级:论坛游民
帖 子:80
专家分:47
注 册:2012-10-9
收藏
得分:0 
我写的是:#include "rectangle.h"
#include "boxtype.h"
还是没达到目的。。。
2012-10-29 18:52
快速回复:
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024468 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved