新手发帖!! 关于 vector 容器的 用法??求解!!

YCMyTot 2014-04-26 03:22:32
刚了解了一下 vector 容器的用法 :如果迭代器的元素类型为 类 时 可以 使用 “--->”运算符直接访问 该元素的一个成员,于是我就做了一个小实验:
代码:
#include<iostream>
#include<vector>
#include<iterator>
using namespace std;

class A //定义了一个非常简单的类
{
private:
int c;
public:
A()
{
cout<<"class A constructed!"<<endl;
c=0;
}
void getA()
{
int a;
cout<<"请输入A的值:"<<endl;
cin>>a;
c=a;
}

int putA()
{
cout<<"A的值为:"<<c<<endl;
}

};
int main()
{
vector <A> Array;
Array->getA(); //报错了 [Error] base operand of '->' has non-pointer type 'std::vector<A>'
Array->putA(); //报错了 [Error] base operand of '->' has non-pointer type 'std::vector<A>'
return 0;
}

求解正确的调用方法???
...全文
151 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
YCMyTot 2014-04-26
  • 打赏
  • 举报
回复
非常谢谢各位的帮助!!不胜感激!!
mujiok2003 2014-04-26
  • 打赏
  • 举报
回复
成员访问运算符: 指针采用->,对象用.
zybjtu 2014-04-26
  • 打赏
  • 举报
回复

#include<iostream>
#include<vector>
#include<iterator>
using namespace std;

class A //定义了一个非常简单的类
{
private:
int c;
public:
A()
{
cout<<"class A constructed!"<<endl;
c=0;
}
void getA()
{
int a;
cout<<"请输入A的值:"<<endl;
cin>>a;
c=a;
}

int putA()
{
cout<<"A的值为:"<<c<<endl;
return c; // 不论返回啥,你这边需要一个返回值.
}

};
int main()
{
vector <A> Array;
//Array->getA(); 如果Array是指针,那么用->来获取方法和属性,如果Array是对象,那么使用.来获取。
//Array->putA(); Array是一个vector, 里面尚无对象.你的getA()和putA()是A这个类的实例才具有的方法.
//所以你调用 getA()和putA()必须用A的对象来调用.
//那么你应该做的是,先在Array里面添加A的实例.
A a;
Array.push_back(a);
//然后取出a值来初始化.
Array.at(0).getA();//at(0)意思是取出第一个元素,也就是a. 然后调用a.getA();
Array.at(0).putA();// 同理

return 0;
}

Pump天天学习 2014-04-26
  • 打赏
  • 举报
回复
比如

A a1;//定义一个A的对象
array.push_back(a1);//把a1加入到vector中

array[0].getA();//通过下标操作获得存储在位置0的对象,然后调用get函数,迭代器也可以
YCMyTot 2014-04-26
  • 打赏
  • 举报
回复
那 怎么做 就对了??
Pump天天学习 2014-04-26
  • 打赏
  • 举报
回复
引用 2 楼 u014693181 的回复:
接1L: 额。。如果Array是个对象的话,那么为何 调用 Array.getA() 和 Array.putA() 时仍然报错?
因为Array是一个Vector类型的对象,vector没有提供getA和putA函数, 你的思路有些乱 需要调用getA函数的不是vector,而是vector中存储的对象 所以你需要先获得vector中存储的对象A,然后再利用这个对象调用get
YCMyTot 2014-04-26
  • 打赏
  • 举报
回复
接1L: 额。。如果Array是个对象的话,那么为何 调用 Array.getA() 和 Array.putA() 时仍然报错?
Pump天天学习 2014-04-26
  • 打赏
  • 举报
回复
楼主你的理解有误 ->操作符和vector中存储的元素类型没有关系 vector <A> Array; Array->getA(); Array只是一个普通的对象,不是指针,是不能使用->操作符的

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧