| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 905 人关注过本帖
标题:大家好,麻烦帮我看下下面三段程序哪里有问题?
只看楼主 加入收藏
baobao111
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-8-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
大家好,麻烦帮我看下下面三段程序哪里有问题?
大家好,麻烦帮我看下下面三段程序哪里有问题?

namesp.h

#ifndef NAMESP_H_INCLUDED
#define NAMESP_H_INCLUDED
namespace pers
{
    const int LEN=40;
    struct person
    {
        char fname[LEN];
        char lname[LEN];
    };
    void getperson(person &);
    void showperson(const person &);
}

namespace debts
{
    using namespace pers;
    struct debt
    {
        person name;
        double amount;
    };
    void getdebt(debt &);
    void showdebt(const debt &);
    double sumdebts(const debt ar[],int n);
}

#endif // NAMESP_H_INCLUDED

-----------------------------------------------------------


namesp.cpp

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

namespace pers
{
    using std::cout;
    using std::cin;
    void getperson(person &rp)
    {
        cout<<"enter first name";
        cin>>rp.fname;
        cout<<"enter last name";
        cin>>rp.lname;
    }
    void showperson(const person &rp)
    {
        std:ccout<<rp.lname<<","<<rp.fname;
    }

}

namespace debts
{

    void getdebt(debt &rd)
    {
        getperson(rd.name);
        std::cout<<"enter debt:";
        std::cin>>rd.amount;
    }

    void showdebt(const debt &rd)
    {
        showperson(rd.name);
        std::cout<<":$"<<rd.amount<<std::endl;
    }

    double sumdebts(const debt ar[],int n)
    {
        double total=0;
        for(int i=0;i<n;i++)
        total +=ar[i].amount;
        return total;
    }
}

----------------------------------------------------------------

main.cpp

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

void other(void);
void another(void);

int main(void)
{
    using debts::debt;
    using debts::showdebt;
    debt golf={{"benny","goetsniff"},120.0};
    showdebt(golf);
    //other();
    //another();

    return 0;
}

void other(void)
{
    using std::cout;
    using std::endl;
    using namespace debts;
    person dg={"doodles","glister"};
    //howperson(dg);
    cout<<endl;
    //debt zippy[3];
    int i;

    for(i=0;i<3;i++);
        //getdebt(zippy[i]);
    for(i=0;i<3;i++);
        //showdebt(zippy[i]);
    //cout<<"Total debt:$"<<sumdebts(zippy,3)<<endl;

}

void another(void)
{
    using pers::person;

    person collector={"milo","rightshift"};
    //pers::showperson(collector);
    std::cout<<std::endl;
}



怎么通过不了编译。
提示main里的showdebt(golf);未定义 是什么原因啊?
搜索更多相关主题的帖子: amount person double void 
2012-08-29 15:57
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
类的成员函数不是这么调用的,你得 obj.func() 这样调用。就像你用 rd.name 这样调用成员一样。


[ 本帖最后由 pangding 于 2012-8-30 01:17 编辑 ]
2012-08-30 01:16
baobao111
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-8-29
收藏
得分:0 
回复 2楼 pangding
刚学到这,我是对着书抄的。  所以搞不清楚哪里出问题。

而且这不是类吧,这只是名称空间吧。

[ 本帖最后由 baobao111 于 2012-8-30 07:40 编辑 ]
2012-08-30 07:39
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:20 
哦。抱歉,那天看的不仔细。

我试了你的代码,编译器只报了一个错误。
namesp.cpp 里的 showperson 下你有个笔误写的是 std:ccout << ...
我改完之后就正常了。运行的输出是:
goetsniff,benny:$120

2012-08-30 09:41
baobao111
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-8-29
收藏
得分:0 
回复 4楼 pangding
那就是我的编译器的问题? 刚才我也试过了。把namesp.cpp的内容全部拷到main.cpp里编译没问题。 用的CodeBlocks10.05。怎么会这样呢。 问题在哪里呢?
2012-08-30 15:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用baobao111在2012-8-30 15:38:18的发言:

用的CodeBlocks10.05。怎么会这样呢。 问题在哪里呢?
编译错误,只跟编译器有关,跟你用什么IDE无丝毫关系
我用 vc9.0 编译通过
我用 mingw4.7.0 也编译通过
2012-08-30 15:45
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
你出的是什么错误呀。你能把你的错误提示发上来吗?截个图也行。
2012-08-30 16:33
baobao111
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-8-29
收藏
得分:0 
[local]1[/local]我好像传不了附件:

错误的红点停在:showDebt(golf);

提示的错误是:
||=== 9.10, Debug ===|
obj\Debug\main.o||In function `main':|
D:\C++ TEST\9.10\9.10\main.cpp|12|undefined reference to `debts::showDebt(debts::Debt const&)'|
||=== 已完成构建: 1 个错误, 0 个警告 ===|
2012-08-31 10:11
baobao111
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-8-29
收藏
得分:0 
回复 7楼 pangding
我好像传不了附件:

错误的红点停在:showDebt(golf);

提示的错误是:
||=== 9.10, Debug ===|
obj\Debug\main.o||In function `main':|
D:\C++ TEST\9.10\9.10\main.cpp|12|undefined reference to `debts::showDebt(debts::Debt const&)'|
||=== 已完成构建: 1 个错误, 0 个警告 ===|
2012-08-31 10:12
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
编译完了之后文件夹里是不是多了一个叫 main.o 的文件?有没有多叫 namesp.o ?
2012-08-31 23:00
快速回复:大家好,麻烦帮我看下下面三段程序哪里有问题?
数据加载中...
 
   



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

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