我写了一个自定义类型的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'
#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'
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货