指向矢量迭代的指针

时间:2015-11-26 19:30:31

标签: c++ pointers vector iteration

迭代矢量我遇到了一些麻烦。 我有一个包含向量的类。该向量包含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;
}

非常感谢!

2 个答案:

答案 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函数,因为你错过了括号()。休息您可以从我的代码中检查的所有错误。如果您有疑问,请随时询问!!!