【发布时间】:2014-04-30 07:38:39
【问题描述】:
我目前正在编写一些代码,它遍历一个向量并为该向量中的每个元素调用一个简单的打印方法;但是,我在向量方面的经验非常有限,并且在让编译器接受这一特定代码段时遇到了一些问题:
std::vector<Buyer *>:: iterator it;
Buyer *b;
for(it = buyers->begin(); it != buyers->end(); ++it) {
b = *it;
cout << b->getName();
}
其中买家是包含买家指针的向量。我宁愿为此目的使用一个数组,但由于我需要为这个特定点使用一个向量,我不确定如何迭代它并最终尝试使用一个迭代器来完成。
弹出的错误信息是:
Retailer.cpp:37:17: error: base operand of ‘->’ is not a pointer
for(it = buyers->begin(); it != buyers->end(); ++it) {
^
Retailer.cpp:37:40: error: base operand of ‘->’ is not a pointer
for(it = buyers->begin(); it != buyers->end(); ++it) {
据我了解,在我没有取消引用的混乱中显然有一个指针,但我不确定这是哪个元素或我应该在哪里取消引用它......对于没有经验的程序员的任何想法使用 c++ 向量/迭代器?
【问题讨论】:
-
buyers的声明是什么? -
buyers其实是在这个类中继承的,但基本上是声明为vector
买家 -
基本上声明为向量?你可以说得更详细点吗?您的问题很可能是由于声明的具体细节造成的。
-
嗯,实际上这就是它的声明方式(当然后面是 ;),但我相信我现在已经解决了这个问题。奇怪的是,我似乎已经通过简单地声明类购买者来解决它;在 Seller.h 文件的开头。这可能与两者都来自同一个类(我忽略了)这一事实有关,或者错误只是移动到错误列表中的不同位置 - 鉴于整个项目中还有十几个错误.
标签: c++ pointers vector iteration