Hi. I am getting the following error message when I try to call the function I have outlined below. Any one know what the problem might be. Can I write this stand-alone function: Huff* findMinimum(vector<Huff*> v) in this context?
Code:
#include<iostream>
#include<string>
#include<vector>
#include<fstream>
#include<stack>
using namespace std;
struct Huff
{
Huff();
int count;
char ch;
Huff* left;
Huff* right;
Huff* parent;
};
Huff* findMinimum(vector<Huff*>& v);
int main(int argc, char* argv[])
{
if(argc<2)
{
cout<<"Not enough arguments were provided."<<endl;
return -1;
}
ifstream myFile(argv[1], ios::in);
if(!myFile.is_open())
{
cout<<"Unknown file specified."<<endl;
return -1;
}
char cz;
int i;
vector<Huff*> values;
while(myFile.get(cz))
{
if(cz < 'a' || cz > 'z')
continue;
for(i=0; i<values.size(); i++)
{
if(values[i]->ch == cz)
{
values[i]->count++;
break;
}
}
if(values.size()==i)
{
Huff* h = new Huff;
h->ch=cz;
h->count=1;
values.push_back(h);
}
}
for(i=0; i<values.size(); i++)
cout<<values[i]->ch<<values[i]->count<<endl;
findMinimum(values); /* Trouble with this line */
return 0;
}
Huff::Huff() : ch(0), count(0) { }
Huff* findMimimum(vector<Huff*>& v)
{
int index, minCo=v[0]->count;
char minCh=v[0]->ch;
index=0;
for(int i=1; i<v.size(); i++)
{
if(v[i]->count < minCo)
{
minCo=v[i]->count;
minCh=v[i]->ch;
index=i;
}
}
}
Error Message:
Code:
[Warning] In function `main':
[Linker error] undefined reference to `findMinimum(std::vector<Huff*, std::allocator<Huff*> >&)'
Thanks in advance, Steve