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.