LNK2005 Errors

Hi all... just making an introductory program using linked lists and I am having troubles compiling... getting these messages

1>main.obj : error LNK2005: "public: __thiscall CUnitList::CUnitList(void)" (??0CUnitList@@QAE@XZ) already defined in civil.obj
1>main.obj : error LNK2005: "public: int __thiscall CUnitList::GetNodeCount(void)const " (?GetNodeCount@CUnitList@@QBEHXZ) already defined in civil.obj
1>main.obj : error LNK2005: "public: int __thiscall CUnitList::GetUnitCount(void)const " (?GetUnitCount@CUnitList@@QBEHXZ) already defined in civil.obj

Here is my code

#ifndef civil_h
#define civil_h

#include <string>
using namespace std;

class CUnitList
{
public:

//Member Functions
CUnitList();
~CUnitList();
int GetNodeCount() const;
int GetUnitCount() const;
void InsertUnit(string);
void Print() const;

private:

//Member Attributes
struct UNITNODE
{
string szUnit;
int nUnitCount;
UNITNODE *pNextUnit;
};

struct DUMMYHEADERNODE
{
int nNodeCount;
int nUnitCount;
UNITNODE *pFirstUnit;
};

DUMMYHEADERNODE *m_pDummyHeaderNode;

};

#ifndef CUnitList_cpp
#define CUnitList_cpp
#include "civil.h"

#include <iostream>
#include <string>
using namespace std;


CUnitList::CUnitList()
{
m_pDummyHeaderNode = new DUMMYHEADERNODE;
m_pDummyHeaderNode->nNodeCount = 0;
m_pDummyHeaderNode->nUnitCount = 0;
m_pDummyHeaderNode->pFirstUnit = NULL;
}

//~CUnitList::CUnitList()
//{};

int CUnitList::GetNodeCount() const
{
return m_pDummyHeaderNode->nNodeCount;
};

int CUnitList::GetUnitCount() const
{
return m_pDummyHeaderNode->nUnitCount;
}

void CUnitList::InsertUnit(string szName)
{
UNITNODE *pUnitNode1;
pUnitNode1 = m_pDummyHeaderNode->pFirstUnit;

while(pUnitNode1)
{
if(pUnitNode1->szUnit == szName)
{
pUnitNode1->nUnitCount++;
m_pDummyHeaderNode->nUnitCount++;
return;
}
}
UNITNODE *pUnitNode2;
pUnitNode2 = new UNITNODE;
pUnitNode2->szUnit = szName;
pUnitNode2->nUnitCount = 1;
pUnitNode2->pNextUnit = m_pDummyHeaderNode->pFirstUnit;
m_pDummyHeaderNode->pFirstUnit = pUnitNode2;
m_pDummyHeaderNode->nUnitCount++;
m_pDummyHeaderNode->nNodeCount = m_pDummyHeaderNode->nNodeCount + 1;
}

void CUnitList::Print() const
{
UNITNODE *pUnitNode;
pUnitNode = m_pDummyHeaderNode->pFirstUnit;

while(pUnitNode)
{
cout << pUnitNode->szUnit << "(" << pUnitNode->nUnitCount << ") , ";
}
}

#endif

Any help is much appreciated! Thanks!
I wish people would take time and post their code accurately and also use the code tags.
The following statement are somewhat suspicious when seen in an implementation (.cpp) file
1
2
#ifndef CUnitList_cpp
#define CUnitList_cpp 
.

Have you got a #include "CUnitList.cpp" directive in main.cpp.
Multiple compilation of source files casued by including source files in other source files is usually the cause of this problem

My apologies as I am a first timer to these forums.

Yes I have included this directive in my main program but still with no luck. Any more suggestions?
NO - I was trying to say that you should NOT have #include CUNitList.cpp in main.cpp, because that could cause the problem

Please post your main.cpp file so I can see.
Topic archived. No new replies allowed.