Saturday, 30 April 2016

Linker Error C++ "undefined reference "








Trying to compile my program via g++ -o prog1 main.cpp -std=c++0x



I get the error:



/tmp/cc1pZ8OM.o: In function `main':
main.cpp:(.text+0x148): undefined reference to `Hash::insert(int, char)'
collect2: error: ld returned 1 exit status



main.cpp



#include 
#include
#include
#include
#include
#include "Hash.h"


using namespace std;

int main(int argc, char *argv[]) {
//preset prime number
int prime = 101;
hash h1;
int key;
Hash HashTable;


// check for Request & string parameters
if(argc != 3) {
cout << "Run program with 2 parameters. [Lower Case]" << endl;
cout << "[1] insert, find, or delete" << endl;
cout << "[2] string" << endl;
}

if(strcmp(argv[1], "insert") == 0) {
//Get Hash for argv[2] aka value
key = h1(*argv[2]);


//check 1
cout << "Hash: " << key << endl;

key = key % prime;

//check 2
cout << "Mod 101 Hash: " << key << endl;

HashTable.insert(key, *argv[2]); //PROBLEM here


}

return 0;
}


Hash.h file:



#include 

#include
#include "LinkedList.h"
using namespace std;

class Hash {
//100 slot array for hash function
LinkedList *hashFN[100];

public:
void insert(int key, char value);

//void deleteItem(int key);
//char* find(int key);


};


Any ideas? Using this to build a hash table with set size.



Edit: Hash.cpp file




#include 
#include
#include "Hash.h"

using namespace std;

void Hash::insert(int key, char value){
*hashFN[key]->addFront(value);
cout << "Success!" << endl;


}


Trying to compile via terminal now with:




g++ -c Hash.cpp -o Hash.o



g++ -o prog1 main.cpp Hash.o -std=c++0x





It goes into an infinite loop somehow.

No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...