I'm writing a "PersonalVec" template class - a vector with other qualities. As a template class, i've implemented everything in the .hpp, as follows:
#ifndef PERSONALVEC_HPP_
#define PERSONALVEC_HPP_
#include <vector>
#include <iostream>
#include <string>
#include <algorithm>
#include <ctime>
#include <cstdlib>
#include <cassert>
using namespace std;
template <class T, class PrnT>
class PersonalVec{ 
 std::vecotr<T> _myVec;
public:
 typedef typename vector<T>::size_type size_type;
 PersonalVec():_myVec(){
  srand(time(NULL));
 }
 void push_back(T element){
  _myVec.push_back(element);
  if(_myVec.size()!= 0){//TODO: change to 1?!!?
   //pick a random number between 0..n-1
   int rand = rand()%_myVec.size();
   //swap
   std::swap(_myVec.at(rand), _myVec.at(_myVec.size()-1));
  }
 }
 int& operator[](size_type index){
  assert(index>=0 && index<_myVec.size());
  return _myVec.at(index);
 }
 const int& operator[](size_type index){
   assert(index>=0 && index<_myVec.size());
   const T element= _myVec.at(index);
   return element;
 }
 void erase(size_type index){
  assert(index>=0 && index<_myVec.size());
  if(index < _myVec.size()-1){
   std::swap(_myVec.at(index) , _myVec.at(_myVec.size()-1));
  }
  _myVec.pop_back();
 }
 void print(){
  for(size_type i=0; i<_myVec.size();++i){
   cout << PrnT()(_myVec.at(i))<<" ";
  }
  cout << endl;
 }
};
#endif /* PERSONALVEC_HPP_ */
I don't understand what's so wrong with my code that the compiler keeps shouting errors like: PersonalVec.hpp:18: error: ISO C++ forbids declaration of ‘vecotr’ with no type PersonalVec.hpp:18: error: invalid use of ‘::’ PersonalVec.hpp:18: error: expected ‘;’ before ‘<’ token PersonalVec.hpp:43: error: ‘const int& PersonalVec::operator[](typename std::vector >::size_type)’ cannot be overloaded PersonalVec.hpp:38: error: with ‘int& PersonalVec::operator[](typename std::vector >::size_type)’ PersonalVec.hpp: In member function ‘void PersonalVec::push_back(T)’: PersonalVec.hpp:29: error: ‘_myVec’ was not declared in this scope PersonalVec.hpp:32: error: ‘rand’ cannot be used as a function PersonalVec.hpp: In member function ‘int& PersonalVec::operator[](typename std::vector >::size_type)’: PersonalVec.hpp:39: error: ‘_myVec’ was not declared in this scope PersonalVec.hpp: In member function ‘const int& PersonalVec::operator[](typename std::vector >::size_type)’: PersonalVec.hpp:44: error: ‘_myVec’ was not declared in this scope PersonalVec.hpp: In member function ‘void PersonalVec::erase(typename std::vector >::size_type)’: PersonalVec.hpp:51: error: ‘_myVec’ was not declared in this scope PersonalVec.hpp: In member function ‘void PersonalVec::print()’: PersonalVec.hpp:59: error: ‘_myVec’ was not declared in this scope
I'd really appriciate your help, since i'm really going nuts here..