在c++中,使用对象向量是一个好主意吗?如果不是,这个c++代码有什么问题?
#include <vector>
using namespace std;
class A {};
int main() {
vector<A*> v ( new A);
return 0;
}来自g++:
13:错误:从
A*' to无符号int‘进行的无效转换
发布于 2010-03-09 18:58:29
std的构造函数::向量采用初始长度,而不是元素。
这意味着你通常会:
vector<A*> v(1); // Initialize to length 1
v.push_back( new A() ); // Add your element...您将得到编译器错误,因为在您的系统上,size_type被定义为unsigned int。它试图使用该构造函数,但失败了,因为您要向它传递指向A的指针。
发布于 2010-03-09 18:59:31
在使用不知道的东西之前,您需要阅读文档。
下面是std::vector类的不同构造函数:
explicit vector ( const Allocator& = Allocator() );
explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );
template <class InputIterator>
vector ( InputIterator first, InputIterator last, const Allocator& = Allocator() );
vector ( const vector<T,Allocator>& x );发布于 2010-03-09 19:00:37
向量没有一个构造函数来存储一个项。
用给定的值生成一个项目的向量:
vector<A*> v ( 1, new A);至于拥有指向动态分配对象的指针向量是否是一个好主意-不。你必须手动管理那个内存。
按值存储对象要好得多,或者如果必须的话--使用智能指针来自动管理内存(例如std::tr1::shared_ptr)。
https://stackoverflow.com/questions/2411704
复制相似问题