求解C++模板与LNK2005 ***obj 已经定义的问题

stephenchen45 stephenchen45 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我定义了一个模板类A,然后在另一个类B中实例化那个A,编译没有问题,但是运行的时候就出现了问题,我贴出部分代码吧。。。

Chain 模板类
template<class DataType>
class Chain
{
private:
ChainNode<DataType> *first;
public:
Chain(void);
Chain(Chain<DataType> ©);
bool IsEmpty() const {return first==0;}
int Length() const;
bool Find(int k,DataType& x) const;
int Search(const DataType& x) const;
Chain<DataType>& Delete(int k,DataType& x);
Chain<DataType>& Insert(int k,const DataType x);
void Sort() ;
void Clear() ;
void Output(ostream& out) const;
void Combination(const Chain& a,const Chain<DataType>& b);
//friend ostream& operator << (ostream& out,Chain<DataType>& x); //采用函数的方式调用可以不用友元
public:
~Chain(void);
};


Interface类
#pragma once
#include<iostream>
#include"Chain.cpp"
using namespace std;

class Interface
{
public:
Interface(void);
void List_Manipulation(Chain<int> &List);
void Search(const Chain<int> &List) const;
void GetLength(const Chain<int> &List) const;
void Combine(const Chain<int> &List) const;
void Output(const Chain<int> &List) const;
void Operation();
public:
~Interface(void);
};

在头文件那里,我在Interface类里面是调入#include"Chain.cpp"的,
在Interface的一些函数里面是有定义一个Chain<int>的类,但是不知道
为什么在编译的时候没有问题,却在运行的时候会出现下面的一些错误:
错误 1 error LNK2005: "public: __thiscall Interface::Interface(void)" (??0Interface@@QAE@XZ) 已经在 Interface.obj 中定义 LinkStruct.obj
错误 2 error LNK2005: "public: __thiscall Interface::~Interface(void)" (??1Interface@@QAE@XZ) 已经在 Interface.obj 中定义 LinkStruct.obj
错误 3 error LNK2005: "public: void __thiscall Interface::GetLength(class Chain<int> const &)const " (?GetLength@Interface@@QBEXABV?$Chain@H@@@Z) 已经在 Interface.obj 中定义 LinkStruct.obj
错误 4 error LNK2005: "public: void __thiscall Interface::Output(class Chain<int> const &)const " (?Output@Interface@@QBEXABV?$Chain@H@@@Z) 已经在 Interface.obj 中定义 LinkStruct.obj
错误 5 error LNK2005: "public: void __thiscall Interface::Search(class Chain<int> const &)const " (?Search@Interface@@QBEXABV?$Chain@H@@@Z) 已经在 Interface.obj 中定义 LinkStruct.obj
错误 6 error LNK2005: "public: void __thiscall Interface::Operation(void)" (?Operation@Interface@@QAEXXZ) 已经在 Interface.obj 中定义 LinkStruct.obj
错误 7 fatal error LNK1169: 找到一个或多个多重定义的符号 E:\MyProjects\List_Linked\Debug\List_Linked.exe


这个问题已经困扰了好多天,上网也查不到相关的资料。。。
望各位大虾指点一下。。。
...全文

相关推荐

openscap-engine-sce-devel-1.2.17-15.el7-9.x64-86.rpm.tar.gz

1、文件内容:openscap-engine-sce-devel-1.2.17-15.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/openscap-engine-sce-devel-1.2.17-15.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

比特魔法师

【以太坊】本地搭建Ethereum私有网络

环境xiaoyu@xiaoyu-VirtualBox:~$ uname -a Linux xiaoyu-VirtualBox 4.10.0-19-generic #21-Ubuntu SMP Thu Apr 6 17:04:57 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux安装访问官方网站https://www.ethereum.org/ 找到Get our c

小雨青年

openscap-engine-sce-devel-1.2.17-13.el7-9.x64-86.rpm.tar.gz

1、文件内容:openscap-engine-sce-devel-1.2.17-13.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/openscap-engine-sce-devel-1.2.17-13.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

比特魔法师

Ethereum 开发简介

内容 Ethereum Web 开发 搭建开发者环境 EVM 与 Solidity 简介 Full Stack – 第一个 Dapp 传统的 Web 开发 简介 有一个后台服务,后台回去连接数据库,好一点有一个 Cache,可以提升访问速度。 前端访问:web 浏览器,工具 Curl/Wget , API caller 缺点: 服务器中心化(如 AWS/ 阿里云等),数据库操作...

smilejiasmile

【区块链技术开发语言】在ubuntu18 系统环境下命令操作配置以太坊go-ethereum环境

这个错误表示在构建 Geth(以太坊客户端)时出现了问题,因为无法找到 github.com/ethereum/go-ethereum/internal/build 包。查看更多信息: 最后,您可以使用 go help modules 命令来查看关于 Go 模块的更多信息,了解如何正确使用它们。更新代码: 确保您的代码库是最新的,有时更新代码可以解决一些依赖问题。更新依赖: 如果已经存在 go.mod 文件,您可以尝试更新依赖。: 有时候旧的依赖缓存可能导致问题,您可以清除 Go 模块的缓存。

云上零度
评论 10
收藏 已收藏
分享
返回顶部
stephenchen45
C++ 语言 65,214 成员 250,514 内容