我写了一个自定义类型的vector. 希望用迭代器遍历, 然后用迭代器输出。 但是为什么编译器说找不到自定义类型中的函数呢。 请大家指点一下。 多谢了。 源代见下
#include<iostream>   
  #include<vector>   
  #include<string>   
  #include<cassert>   
  using   namespace   std;   
  class   Test   
  {   
  public:   
  Test(int =12, char []="zhuyu");   
  Test(const   Test   &a);
  ~Test();    
  void setvar(int a, char *tmpname);
  int getvar();
  char *getstring();
  private: 
  int var01;
  char *string;
  }; 
    
  Test::Test(int a, char *name){
                 setvar(a,name);
                 cout << "Called   默认构造函数!"<<endl;
                 }
  void Test::setvar(int a, char *tmpname){
                   var01=a;
                   string=new char(strlen(tmpname));
                   strcpy(string, tmpname);
                   }
  Test::Test(const   Test& a){
                   var01 = a.var01;
                   string=new char(strlen(a.string)+1);
                   strcpy(string, a.string);
                   cout<<"Called   拷贝构造函数!"<<endl;                        
                     }
  Test::~Test(){
                   delete []string;
                   cout <<"Called the deleteConstruction"<<endl;
                } 
                
  int Test::getvar(){
                 return var01;
                 }
                 
  char * Test::getstring(){
                 return string;   
                    }
  int   main()   
  {   
  vector<Test>   vs(2);
  for (vector<Test>::const_iterator tmp=vs.begin(); tmp!=vs.end(); tmp++){
      cout <<"the var is "<<*tmp.getvar()<<endl;
      cout <<"the string is "<<*tmp.getstring()<<endl;
      }   
  cin.get();
   return 0;
  }   编译器报的错误是 
53 E:\testC\vector_push.cpp 'class __gnu_cxx::__normal_iterator<const Test*, std::vector<Test, std::allocator<Test> > >' has no member named 'getvar'
54 E:\testC\vector_push.cpp 'class __gnu_cxx::__normal_iterator<const Test*, std::vector<Test, std::allocator<Test> > >' has no member named 'getstring'