Динамический массив объектов в C ++ - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь создать динамический массив объектов, похожий на ArrayLists в Java. Я новичок в C ++ и не могу заставить его работать.

class Album{

private:

public:
    void addPhoto(Photo p){

    }

};

Как должен выглядеть мой личный датабордер и как мне добавить p к нему? И нужен ли мне указатель по какой-то причине?

Ответы [ 4 ]

2 голосов
/ 12 марта 2012

Функциональность, которую вы ищете, уже существует в классах коллекции stl , и, не зная вашего приложения, вам придется сообщить вам, нужен ли вам указатель или нет.

Базовая компоновка нижележащего контейнера может выглядеть примерно так.

class Album{    

public:
    void addPhoto(Photo p){
         Photos.push_back(p); 
    }
private:
    std::vector<Photo> Photos; 

};
2 голосов
/ 12 марта 2012

Вы должны использовать std :: vector .

0 голосов
/ 12 марта 2012

@ fontanini дал вам хороший ответ, вы должны использовать вектор, если вам нужен динамический массив объектов.

Но, возможно, вам не нужен класс для начала.Не все в C ++ нужно инкапсулировать в класс, если вам это действительно не нужно.

Подумайте о своей структуре данных и о требованиях.Возможно, вы захотите узнать больше о стандартной библиотеке C ++ и STL, чтобы ознакомиться с другими контейнерами, их возможностями, ограничениями и целями:

Есть отличные видео-лекции по STL " Введение в STL с Stephan TLavavej"

0 голосов
/ 12 марта 2012

Вы можете использовать встроенный класс std :: vector, который ведет себя очень похоже на ArrayList. (редактировать ... похоже, кто-то избил меня до этого)

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