Простой C ++ вектор / указатель gaffe - PullRequest
0 голосов
/ 18 октября 2011

Это определенно действительно просто.Я не работал с C ++ в течение нескольких лет, поэтому мне нужна помощь, чтобы выяснить, почему это не скомпилируется.

У меня есть класс с именем PointList.В файле заголовка у меня есть следующее:

public:
    PointList();

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

В файле .cpp у меня есть следующее:

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

Это не компилируется.

Ожидаемый спецификатор типа перед 'vector'
Невозможно преобразовать 'int *' в 'std :: vector <*' в присваивании <br>Ожидается ';'перед «вектором»

Что дает?

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

Используете ли вы using декларации. Если нет, вам нужно префикс vector с namespace std:: в вашем файле cpp

0 голосов
/ 18 октября 2011

Вам необходимо указать вектор квалификационного пространства:

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

И не злоупотреблять указателями в C ++.Скорее всего, член pl не обязательно должен быть указателем.

Если вам нужна коллекция (вектор, список и т. Д.) Полиморфных типов, взгляните на Boost.PointerContainer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...