C++新手关于在类和结构体中使用vector容器的问题

舟遥 2011-10-14 04:22:08
类的私有成员可以定义为vector对象吗?结构体中能用vector对象吗?
#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
#define RANK 10
using namespace std;
class Open{
public:
Open():vec(RANK){};
Open(const vector<int>& vec,int fn):vec(RANK){
this.vec.assign(vec.begin(),vec.end());
//'vec' is not a type
//request for member of non-aggregate type before '.' token
this.fathernumber = fn;
//fathernumber' is not a type
//request for member of non-aggregate type before '=' token
};
void copy(Open& a,Open& b);
void exchange(int x,int y);
int getfathernumber();
vector<int> getvec();
private:
vector<int> vec;
int fathernumber;
};
void Open::copy(Open& b){
this.vec.assign(b.getvec().begin(),b.getvec().end());
}
void Open::exchange(int x,int y){
int temp;
temp = this.vec[x] ;
this.vec[x] = this.vec[y] ;
this.vec[y] = this.vec[x] ;
}
int Open::getfathernumber(){
return this.fathernumber;
}
vector<int> Open::getvec(){
return this.vec;
}
typedef struct Closed{
int number;
vector<int> vec(10);
int fathernumber ;
}Closed,*Closedptr;

还有还多类似的提示,不一一列举了,大概都是在vector变量处,请问是为什么啊?
...全文
972 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
舟遥 2011-10-14
  • 打赏
  • 举报
回复
楼上多谢多谢!
之前其他几位已经指出来,不过还是要谢谢啊!
以前用java写代码写习惯了,这次老师让用c++写,才搞出这么低级的错误,呵呵。。。。。
seucs 2011-10-14
  • 打赏
  • 举报
回复
两个都能,C++引入"自定义数据类型(结构体和类)是为了“使自定义的数据类型和内置数据类型一样使用起来方便”,但是你把this指针用错了,这不是C#和JAVA语言,这是C++

Open(const vector<int>& vec,int fn):vec(RANK){
this.vec.assign(vec.begin(),vec.end()); //改为 this->vec.assign(vec.begin(),vec.end());
//'vec' is not a type
//request for member of non-aggregate type before '.' token
this.fathernumber = fn; //改为 this->fathernumber = fn;
//fathernumber' is not a type
//request for member of non-aggregate type before '=' token
};

舟遥 2011-10-14
  • 打赏
  • 举报
回复
回8楼,那可以用assign来给类或结构体中的vector变量赋值么?
舟遥 2011-10-14
  • 打赏
  • 举报
回复
多谢 xp8802 以及楼上诸位了!忘了this的用法了。。。。。

追问xp8802,vector变量定义时不需要预留一个空间吗?在类或结构体内定义vector变量,怎么给它预留空间呢?
退学者的游戏 2011-10-14
  • 打赏
  • 举报
回复
修正下 是memset ...
退学者的游戏 2011-10-14
  • 打赏
  • 举报
回复
结构体中能用vector这是肯定的 但是如果是纯POD数据 才推荐你使用结构体。
还有一点就是 含有vector成员的机构提初始化时候不要使用类似 memste( &your_strcut, 0, sizeof(your_strcut) );这种做法是错误的。
xp8802 2011-10-14
  • 打赏
  • 举报
回复
换this->再试试
stef3390 2011-10-14
  • 打赏
  • 举报
回复
绝对可以的!!!!!都能!
xp8802 2011-10-14
  • 打赏
  • 举报
回复
把vec后面的括号去掉
imhxb 2011-10-14
  • 打赏
  • 举报
回复
神马都能
hzhxxx 2011-10-14
  • 打赏
  • 举报
回复


简洁回答:能!
龙哥依旧 2011-10-14
  • 打赏
  • 举报
回复
简洁回答:能!

64,654

社区成员

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

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