My c++ program fails with below reasons:
Error   1   error LNK2005: "public: void __thiscall dataHolder::addData(int)" (?addData@dataHolder@@QAEXH@Z) already defined in Source.obj
Error   2   error LNK2005: "public: void __thiscall dataHolder::findUnique(void)" (?findUnique@dataHolder@@QAEXXZ) already defined in Source.obj
Error   3   error LNK2005: "public: void __thiscall dataHolder::printData(void)" (?printData@dataHolder@@QAEXXZ) already defined in Source.obj  
Error   4   error LNK1169: one or more multiply defined symbols found   
However, when I moved all definitions in once source c++ file, it worked fine.
Below is my source code:
source.cpp file:
#include "dataClass.h"
void main(){
    dataHolder v1;
    for(int i=1;i<=10;i++)
    v1.addData(i);
    for(int i=1;i<=5;i++)
    v1.addData(i);
    v1.printData();
    v1.findUnique();
}
dataClass.h file:
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <vector>
#include <map>
using namespace std;
class dataHolder{
public:
    void printData();
    void addData(int data);
    void findUnique();
    int uniqueData();
private:
    vector<int> dataVector;
};
void dataHolder::addData(int val){
    dataVector.push_back(val);
};
void dataHolder::printData(){
    vector<int>::iterator vIt;
    for(vIt=dataVector.begin();vIt<dataVector.end();vIt++){
        cout<< *vIt<<endl;
    };
};
void dataHolder::findUnique(){
    map<int ,int> dataMap;
    vector<int>::iterator vIt;
    map<int ,int>::iterator mIt;
    for(vIt=dataVector.begin();vIt<dataVector.end();vIt++){
        if(dataMap.find(*vIt)==dataMap.end())
            dataMap[*vIt]=1;
        else
            dataMap[*vIt] = dataMap[*vIt]+1;
    };
    for(mIt=dataMap.begin();mIt != dataMap.end();mIt++){
        if(mIt -> second == 1)
            cout<<mIt->first<<" is Unique"<<endl;
    };
};
please guide for the issue.