关于vector:我的类里定义了vector成员,如何使用

cppkiller 2004-07-13 05:15:55
我有两个类:
#include <vector>
....
class g
{
public:
int a;
int b;
g(int i,int j);
~g();
};

class vg
{
public:
int c;
vector <g> gg;
vg(int k);
};

//----
#include <my.h>

g:g(int i,int j)
{
//do some initiation
}

vg::vg(int k)
{
c=k;
g *gtmp;
gtmp=new g(1,2);
gg.push_back(g); //error...?
}

请高手指点迷津。。。。
...全文
263 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cppkiller 2004-07-13
  • 打赏
  • 举报
回复
结题。
希望其他网友如我一样,找到问题答案了就把它放出来大家共享。
cppkiller 2004-07-13
  • 打赏
  • 举报
回复
我发现错误了。
那个
class vg
{
public:
int c;
vector <g> gg;
vg(int k);
};
中的vector <g> gg;改为:
vector <g *> gg;
就好了。感谢各位帮忙。
myy 2004-07-13
  • 打赏
  • 举报
回复
我的代码是测试过的,你试了吗?
cppkiller 2004-07-13
  • 打赏
  • 举报
回复
没错没错,本来是push_back(gtmp),笔误。
但仍报错:
[C++ Error] myfuncs1.cpp(64): E2285 Could not find a match for 'vector<g,allocator<g> >::push_back(g *)'
myy 2004-07-13
  • 打赏
  • 举报
回复
......
vg::vg(int k)
{
c=k;
g gtmp(1,2);
gg.push_back(gtmp);
// 将gtmp的副本放vector中最后一个,注意push_back是个“拷贝过程”
// push_back(const T& x), Inserts a copy of x to the end of self.
// g类 最好应实现“拷贝构造子”,即 g::g(g& other_g)
}
geochway 2004-07-13
  • 打赏
  • 举报
回复
歌们,自己把自己绕迷了吧.

g是类型名,又不是变量名,自然有问题
应改为 gg.push_back(*gtmp);
JetKingLau 2004-07-13
  • 打赏
  • 举报
回复
先 gg.resize(...) 一下再 gg.push_back(gtemp) 或 gg[0] = gtemp。
kubite 2004-07-13
  • 打赏
  • 举报
回复
gg.push_back(g); //error...?
你放在里面的应该是指针吧,应该这样写
gg.push_back(gtmp);
在vg类的public部分应该这样写
vector <g *> gg;

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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