vector作为成员变量的问题

时间:2008-06-12 15:10:08   来源:论坛整理  作者:  编辑:chinaitzhe
我在一个类中声明了一个vector作为成员变量,值类型是我定义的另一个类,如
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





class A{};

class B{

vector<A> Alist;

};




编译都没错,可是当我在main函数中执行
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





B b;

b.Alist.push_back(A());




时就出错了。。。运行时错误,到底是什么原因?要把vector作为类的成员变量怎么做呢?
网友回复:类的私有成员怎么能被直接访问呢?
网友回复:呃,认真看看编译错误提示。
耐住性子,不要浮躁。
英文很简单,你必须跨过这道坎。
网友回复:对不起,B中漏了public,我的代码中有的,不是这个错误。
网友回复:编译任何没错的。。。
网友回复:这样
class A{};
class B{
vector <A> Alist;
public:
void push(A a)
{
Alist.push_back(a);
}
};

B b;
b.push(A());
网友回复:难道是因为我的A类没有写copy构造函数?我试试去。。。
网友回复:
引用 5 楼 lyle3 的回复:
这样
class A{};
class B{
vector <A> Alist;
public:
void push(A a)
{
Alist.push_back(a);
}
};

B b;
b.push(A());

呵呵,这样的封装我也懂得,上面只是举个例子,果然是因为A类没有写copy构造函数。。。问题解决了。。。谢谢
网友回复:运行时错误?
网友回复:楼主你这个贴子算是白发了。
为什么A加上copy constructor就好了?A需要有copy constructor吗?
网友回复:STL种的vector,set map等等是模板类,它要支持泛型算法。 所以具体的类型必须符合以下3个条件
1. 缺省的构造函数
2. 支持等于操作
3. 支持小于操作
关键字:vector,成员,变量,问题,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面