| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 558 人关注过本帖
标题:c++ primer plus中的代码问题,求指教
只看楼主 加入收藏
纪老猴子
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-13
结帖率:83.33%
收藏
已结贴  问题点数:4 回复次数:1 
c++ primer plus中的代码问题,求指教
程序代码:
//namespace.h
#include <string>

namespace pers
{
    struct Person
    {
        std::string fname;
        std::string lname;
    };

    void getPerson (Person &);
    void showPerson (Person &);
}

namespace debts
{
    using namespace pers;

    struct Debt
    {
        Person name;
        double amount;
    };

    void getDebt (Debt &);
    void showDebt (Debt &);
    double sumDebts (const Debt ar[],int n);
}



程序代码:
//namesp.cpp
#include <iostream>
#include "namespace.h"

namespace pers
{
    using std::cout;
    using std::cin;
    using std::endl;

    void getPerson (Person &rp)
    {
        cout << "Enter the first name  : ";
        cin >> rp.fname;
        cout << endl;

        cout << "Enter the last name : ";
        cin >> rp.lname;
        cout << endl;
    }

    void showPerson (const Person &rp)
    {
        cout << rp.lname << " and " << rp.fname;
        cout << endl;
    }
}

namespace debts
{
    using std::cout;
    using std::cin;
    using std::endl;
    using pers::getPerson;
    using pers::showPerson;


    void getDebt (Debt &rd)
    {
        getPerson (rd.name);
        cout << "Enter debt :";
        cin >> rd.amount;
    }

    void showDebt (const Debt &rd)
    {
        showPerson (rd.name);
        cout << " $" << rd.amount << 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 "namespace.h"

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

int main ()
{
    using debts::Debt;
    using debts::showDebt;

    Debt golf = {{"Benny","Goatsniff"},120.0};
    showDebt (golf);
    other ();
    another ();
    return 0;
}

void other (void)
{
    using std :: cout;
    using std :: cin;
    using std :: endl;


    using namespace debts;

    Person dg = {"Doodles","Glister"};
    showPerson (dg);
    
    cout << endl;
    Debt zippy[3];

    int i = 0;
    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;
    return ;
}

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

    Person collector = {"Milo","Rightshitf"};
    pers::showPerson (collector);
    std::cout << std::endl;
    
    return ;
}



编译器错误提示:>main.obj : error LNK2019: 无法解析的外部符号 "void __cdecl debts::showDebt(struct debts::Debt &)" (?showDebt@debts@@YAXAAUDebt@1@@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "void __cdecl pers::showPerson(struct pers::Person &)" (?showPerson@pers@@YAXAAUPerson@1@@Z),该符号在函数 "void __cdecl other(void)" (?other@@YAXXZ) 中被引用
1>E:\Code\code from C++ Primer Plus\名称空间示例代码\Debug\名称空间示例代码.exe : fatal error LNK1120: 2 个无法解析的外部命令


这是怎么回事啊,查资料查不到。。
2015-01-29 19:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
这种问题,提示已经说得很清楚了,下次不要问了

比如编译器说找不到 void __cdecl debts::showDebt(struct debts::Debt &)
你自己查一下代码,确实没有,你声明了 void showDebt (Debt &);
但根本没有 void showDebt (Debt &rd) 的实现,只有 void showDebt (const Debt &rd) 的实现
2015-01-30 08:32
快速回复:c++ primer plus中的代码问题,求指教
数据加载中...
 
   



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

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