Начинающий C ++: создание объектов во время выполнения, не зная, сколько объектов создать - PullRequest
2 голосов
/ 14 октября 2011

Скажем, у меня есть определенный класс, который называется MyClass.Мой метод 'main' принимает в качестве аргументов список имен файлов.Каждое имя файла является файлом конфигурации для MyClass, но пользователь программы может иметь столько объектов MyClass, сколько он хочет.Если они введут, скажем, 2 имени файла в качестве аргументов моего основного метода, я хотел бы иметь 2 объекта.

Если бы я знал, что пользователь ограничен 2 объектами, я мог бы просто использовать:

MyClass myclass1;
MyClass myclass2;

Однако это не сработало бы, если бы пользователь сказал, что вместо этого вводил 3 или 4 имени файла.Может ли кто-нибудь помочь мне и предложить метод, который я мог бы использовать для создания ряда сумасшествий класса в зависимости от количества аргументов, выданных моей программе?

Спасибо

Ответы [ 3 ]

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

Используйте std::vector.Пример

#include <vector>

std::vector<MyClass> vec;
vec.push_back(MyClass());
vec.push_back(MyClass());
vec.push_back(MyClass());

После этого вы можете получить доступ к элементам через [], итераторы и многое другое.В сети есть отличные ссылки.

2 голосов
/ 14 октября 2011

Для этого вы должны использовать массивы или векторы:

vector<MyClass> myclass;

myclass.push_back( ... );  // Make your objects, push them into the vector.
myclass.push_back( ... );
myclass.push_back( ... );

И тогда вы можете получить к ним доступ как:

myclass[0];
myclass[1];

...

См. Википедию для получения дополнительной информации и примеров:

http://en.wikipedia.org/wiki/Vector_%28C%2B%2B%29#Usage_example

2 голосов
/ 14 октября 2011

Вы можете использовать std::vector из MyClass экземпляров - тогда вы можете сделать столько, сколько захотите.

Взгляните на этот учебник , например (один из многих в Интернете), чтобы начать работу.

...