Yinlixii 2018-12-19 16:27 采纳率: 75%
浏览 2011
已采纳

C++项目链接时出现LINK2005和LINK1169错误,错误发生在哪里?

在网上看了别人做C++ Primer15.6习题从程序。在“15.3.h”中定义了类和一个全局函数,然后在"15.6.cpp"中调用这个函数。
"15.3.h"中内容如下

#ifndef CP5_EX15_03_QUOTE_H_
#define CP5_EX15_03_QUOTE_H_

#include <string>
#include <iostream>

inline namespace EX03 {

    using std::string;
    using std::ostream; using std::endl;

    class Quote {
    public:
        Quote() = default;
        Quote(string const& b, double p) : bookNo(b), price(p) { }

        string isbn() const { return bookNo; }
        virtual double net_price(size_t n) const { return n * price; }

        virtual ~Quote() = default;
    private:
        string bookNo;
    protected:
        double price = 0.0;
    };

    double print_total(ostream& os, Quote const& item, size_t n) {
        double ret = item.net_price(n);
        os << "ISBN: " << item.isbn() << " # sold: " << n << " total due: " << ret << endl;
        return ret;
    }

}

#endif // CP5_EX15_03_QUOTE_H_

15.6.cpp中我是这样调用的

#include "15.3.h"

int main() {
    EX03::Quote quote_03("0-201-78345-X", 23.8);
    EX03::print_total(std::cout, quote_03, 3);
    system("pause");
}

然后报了这两个错
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2005 "double __cdecl EX03::print_total(class std::basic_ostream > &,class EX03::Quote const &,unsigned int)" (?print_total@EX03@@YANAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@ABVQuote@1@I@Z) 已经在 15.3.obj 中定义 15 C:\Users\luxiao\source\repos\15\15\15.6.obj 1

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK1169 找到一个或多个多重定义的符号 15 C:\Users\luxiao\source\repos\15\Debug\15.exe 1

我在网上看到很多人回答这个问题是由于在include头文件时进行了重复定义。但是他们给的例子通常是多个源文件引用同一个头文件,这个我比较好理解重复定义。但是我这里只有一个头文件和源文件,为什么会出现这样的错误呢?请教大家

  • 写回答

1条回答 默认 最新

  • mvwan 2018-12-19 09:26
    关注

    测试运行没有报错,我用的2015图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 vue3页面el-table页面数据过多
  • ¥100 vue3中融入gRPC-web
  • ¥15 kali环境运行volatility分析android内存文件,缺profile
  • ¥15 写uniapp时遇到的问题
  • ¥15 vs 2008 安装遇到问题
  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码