简单的 C++矢量/指针失态

发布于 12-10 20:27 字数 458 浏览 0 评论 0原文

这绝对是非常简单的。我已经离开 C++ 几年了,所以我需要一些帮助来弄清楚为什么它无法编译。

我有一个名为“PointList”的课程。在头文件中,我有以下内容:

public:
    PointList();

private:
    std::vector< Point* > *pl;

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

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

这不会编译。

“向量”之前的预期类型说明符
无法在赋值中将“int*”转换为“std::vector <*”
预期的 ';'在“矢量”之前

给出了什么?

This is definitely really simple. I have been out of C++ for a few years, so I need some help with figuring out why this won't compile.

I have a class called 'PointList'. In the header file, I have the following:

public:
    PointList();

private:
    std::vector< Point* > *pl;

In the .cpp file, I have the following:

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

This does not compile.

Expected type-specifier before 'vector'
Cannot convert 'int*' to 'std::vector <*' in assignment
expected ';' before 'vector'

What gives?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尸血腥色2024-12-17 20:27:40

您是否使用 using 声明。如果没有,您需要在 cpp 文件中为 vector 加上 namespace std:: 前缀

Are you using using declarations. If not you need to prefix vector with namespace std:: in your cpp file

留一抹残留的笑2024-12-17 20:27:40

您需要命名空间限定向量:

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

并且,不要在 C++ 中滥用指针。最有可能的是成员pl不需要是指针。

如果您需要多态类型的集合(向量、列表等),请查看 Boost.PointerContainer

You need to namespace qualify vector:

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

And, do not abuse pointers in C++. Most probably member pl need not be a pointer.

If you need collection of (vector, list, etc) of polymorphic types, take a look at Boost.PointerContainer

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文