为什么我在hashtable.h(8)中得到“在左括号'{'之前找到的文件结尾”?

时间:2015-04-16 13:28:58

标签: c++ templates c++11

当我尝试编译时出现错误,我不知道为什么,因为两组括号都匹配。

   #include <iostream>
   #include <vector>
   #include <list>
   #include <string>
   #include <utility>
   #include <fstream>

  namespace cop4530 {

  template <typename T>
  class HashTable {
  public:
        HashTable(size_t size = 101);
        ~HashTable();
        bool contains(const T &);
        bool insert(const T &);
        bool insert(T && );
        bool remove(const T& );
        void clear();
        bool load(const char *);
        void dump();
        bool write_to_file(const char *);

        // used when improper size is given (for example
        // size is 0 or negative)
        static const unsigned int default_capacity = 11;
        static const unsigned int max_prime = 1301081;

    private:
        std::vector<std::list<T>> listTab;
        void makeEmpty();
        void rehash();
        size_t myhash(const T &);
        unsigned long prime_below(unsigned long);
        void setPrimes(std::vector<unsigned long> &);
        int currentSize;
   }; // end of HashTable

   #include "hashtable.hpp"

   };   // end of namespace 4530

或者问题可能在.hpp甚至是main.cpp?

谢谢!

2 个答案:

答案 0 :(得分:3)

这里:

vector<std::list<T>>

>>是大多数编译器读取为运算符的标记,如此行中的标记:

std::cin >> toto;

它使你的编译器从这一行变得疯狂,并在之后打印出奇怪的错误。

插入空格以将其定义为双模板括号标记:

vector<std::list<T> >

答案 1 :(得分:0)

命名空间的右括号后面没有分号。