首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

LNK2005(xx函数在obj中已定义)解决办法

2013-04-20 
LNK2005(xx函数在obj中已定义)这个代码好纠结。。。我没有重定义....一共有三个代码:CDArray.cpp、CDArray.h还

LNK2005(xx函数在obj中已定义)
这个代码好纠结。。。我没有重定义....
一共有三个代码:CDArray.cpp、CDArray.h还有一个测试这个数据结构的Dynamic_Array.cpp文件

其中CDArray.h如下:


#include <iostream>

using namespace std;

classCDArray
{
private:
double*m_pData;
intm_nSize;

private:
voidInit();//初始化
voidFree();//释放动态内存
inlineintInvalidateIndex(int nIndex);//判断下标合法性

public:
CDArray();//缺省构造函数
CDArray(int nSize, double dValue = 0);//其他构造函数,设置数组大小,并设置所有元素为0
CDArray(const CDArray &arr);//拷贝构造函数
~CDArray();//析构函数

voidPrint();//输出显示所有数组元素
intGetSize() const;//获取数组元素个数
intSetSize(int nSize);//重新设置数组元素个数注:若nSize小于原数组大小,可截断取前nSize个元素作为新数组的元素;若nSize大于原数组大小,新增的元素的值设置缺省值0即可

doubleGetAt(int nIndex) const;//获取某个元素
doubleoperator[] (int nIndex) const;//重载[]操作符,以便像传统数组那样通过a[k]来获取元素值
intSetAt(int nIndex, double dValue);//设置某个元素值

intPushBack(double dValue);//追加新的元素到数组末尾
intDeleteAt(int nIndex);//从数组中删除一个元素
intInsertAt(int nIndex, double dValue);//插入一个新的元素到数组中

CDArrayoperator= (const CDArray &Array);//重载操作符=
};

intCDArray::InvalidateIndex(int nIndex)// 判断下标的合法性
{
if (nIndex<0 || nIndex>m_nSize)      //下标不能小于0
{
cout<<"下标不正确"<<endl;
return 0;
}
else
return 1;
}
//////////内联函数的定义放在头文件中,否则编译通过链接失败


然后CDArray.cpp是类里面的函数的定义:

#include <iostream>

#include "CDArray.h"
using namespace std;

#define Success 1
#define Fail0

void CDArray::Init()
{
if (InvalidateIndex(m_nSize))//如果下标合法,正常初始化
m_pData = new double(m_nSize);
else
m_pData = new double(0);
}....


为什么编译不能通过???!!!
错误提示:
error LNK2005: "private: void __thiscall CDArray::Init(void)" (?Init@CDArray@@AAEXXZ) 已经在 CDArray.obj 中定义Dynamic_Array.obj

很久没有写C++了,几乎都不会写了.....
[解决办法]
头文件加上 


#ifndef CDARRAY_H_
#define CDARRAY_H_

[你的头文件代码]

#endif

热点排行