Hey! When trying to compile the code for a ordered vector class I get the following error:
[Linker error] undefined reference to `WinMain@16'
Anyone have any idea what I might be doing wrong? This is driving me crazy and any help would be greatly appreciated.
Code is as follows:
Code:#include <stdlib.h> #include <iostream> #ifndef _ORDEREDVECTOR_H #define _ORDEREDVECTOR_H template <class Object> class orderedVector { public: orderedVector(int n); orderedVector( ); orderedVector(const orderedVector & v); virtual ~orderedVector( ); void dissolve ( ); void add (const Object x); void remove (const Object x); void removeAt (int i); Object & operator [](int i); int length( ) const; bool isEmpty( ) const; bool contains(const Object x); private: Object * buffer; int size, capacity; void reserve(int newCapacity); void resize(int newCap) {reserve(newCap);} }; template <class Object> orderedVector<Object>::orderedVector( ) :size(0),capacity(0),buffer(0){} template <class Object> orderedVector<Object>::orderedVector(int n): size(0), capacity(n), buffer(0) { if (n < 0) { cerr << "Error: You can't create a vector with a negative capacity!\n"; exit(1); } } template <class Object> orderedVector<Object>::orderedVector(const orderedVector & v) { if (this == &v) { cerr << "Error: You can't copy a vector onto itself!\n"; exit(1); } buffer = 0; buffer = new Object[v.capacity]; size = v.length( ); capacity = v.capacity; for (int i = 0; i < v.length( ); i++) { buffer[i] = v.buffer[i]; } } template <class Object> orderedVector<Object>::~orderedVector( ) { delete [ ] buffer; } template <class Object> void orderedVector<Object>::add(const Object x) { if (size == capacity) resize(capacity + 5); if (size == 0) buffer[0] = x; else { for (int i = 0; i < size; i++) { if (x <= buffer[i]) { int j = size; while (j > i) { buffer[j] = buffer[j-1]; j--; } buffer[i] = x; } } } size++; } template <class Object> void orderedVector<Object>::remove(const Object x) { bool temp; for (i = 0; i < size; i++) { if (buffer[i] == x) temp = true; else temp = false; } if (temp == false) { cerr << "Error: Object doesn't exist!\n"; exit(1); } else { for (int i = 0; i < size; i++) { int j = i; while (j < size - 1) { buffer[j] = buffer[j+1]; j++; } } size--; } } template <class Object> void orderedVector<Object>::removeAt(const int i) { if (i < 0 || i >= size) { cerr << "Error: Index out of range!\n"; exit(1); } int j = i; while (j < size - 1) { buffer[j] = buffer[j+1]; j++; } size--; } template <class Object> Object & orderedVector<Object>::operator [] (int i) { if (i < 0 || i >= size) { cerr << "Error: Index out of range!\n"; exit(1); } return buffer[i]; } template <class Object> int orderedVector<Object>::length( ) const { return size; } template <class Object> bool orderedVector<Object>::isEmpty( ) const { return size == 0; } template <class Object> bool orderedVector<Object>::contains(const Object x) { bool temp; for (i = 0; i < size; i++) { if (buffer[i] == x) temp = true; else temp = false; } return temp; } template <class Object> void orderedVector<Object>::reserve(int newCap) { if (buffer == 0) { size = 0; capacity = 0; } if (newCap <= capacity) return; Object * newBuffer = new Object[newCap]; for (int i = 0; i < size; i++) newBuffer[i]=buffer[i]; capacity = newCap; delete [ ] buffer; buffer = newBuffer; } #endif



LinkBack URL
About LinkBacks


