迭代矢量我遇到了一些麻烦。 我有一个包含向量的类。该向量包含Artikel类型的对象(另一个类被制作)。我的想法是,当我打电话给" .getArtikels"它返回一个指向向量的指针(如class.cpp中所示)。然后我遍历向量并调用" getname"向量中的对象。
我得到的错误是:
左边的' - >开始'必须指向class / struct / union / generic类型
左边的' - >结束'必须指向class / struct / union / generic类型
main中的函数showarticles:
int showarticles()
{
for (vector<Artikel>::iterator i = BC.getArtikels->begin(); i != BC.getArtikels->end(); ++i)
{
cout << i->getName() << endl;
}
return 0;
}
class.h
public:
vector<Artikel> const * getArtikels() const;
private:
vector<Artikel> Artikels;
class.cpp
vector<Artikel> const* Bandencentrale::getArtikels() const
{
return &Artikels;
}
我剥离了代码并留下了看似必要的部分。
编辑:
我忘了调用getArtikels函数,因为我返回了一个const我必须编辑迭代器:
main中的函数showarticles:
int showarticles()
{
for (vector<Artikel>::const_iterator i = BC.getArtikels()->**c**begin(); i != BC.getArtikels->cend(); ++i)
{
cout << i->getName() << endl;
}
return 0;
}
非常感谢!
答案 0 :(得分:1)
您忘了拨打getArtikels
功能:
BC.getArtikels()->begin();
答案 1 :(得分:0)
检查此程序: -
#include<iostream>
#include<vector>
using namespace std;
class A
{
string name;
public:
A(string n): name(n) {}
const string getName() const
{
return name;
}
};
class B
{
vector<A> v;
public:
void getv(int);
vector<A> const* getArtikel() const;
};
void B :: getv(int n)
{
string s;
for (int i=0; i<n; ++i)
{
cin>>s;
v.push_back(s);
}
}
vector<A> const* B :: getArtikel() const
{
return &v;
}
void show(B bc)
{
for (auto i = bc.getArtikel()->begin(); i!=bc.getArtikel()->end(); ++i)
{
cout<<i->getName()<<endl;
}
}
int main()
{
B obj;
obj.getv(5);
cout<<endl;
show(obj);
return 0;
}
这将提供您想要的输出。现在一个问题是你使用getArtikel
函数,因为你错过了括号()
。休息您可以从我的代码中检查的所有错误。如果您有疑问,请随时询问!!!