简单的c++矢量/指针错误

Simple C++ vector/pointer gaffe

本文关键字:指针 错误 矢量 c++ 简单      更新时间:2023-10-16

这确实很简单。我已经离开c++好几年了,所以我需要一些帮助来弄清楚为什么这个不能编译。

我有一个叫做'PointList'的类。在头文件中,我有以下内容:

public:
    PointList();
private:
    std::vector< Point* > *pl;

在.cpp文件中,我有以下内容:

PointList::PointList()
{
    pl = new vector< Point* >();
}

不能编译。

在'vector'之前指定类型
无法将赋值中的'int*'转换为'std::vector <*'

给了什么?

您是否使用using声明?如果没有,则需要在cpp文件

中用namespace std::作为vector的前缀。

您需要命名空间限定vector:

PointList::PointList()
{
    pl = new std::vector< Point* >();
}

并且,不要在c++中滥用指针。成员pl很可能不需要是指针。

如果你需要多态类型的集合(向量,列表等),看看Boost。PointerContainer