Процедурная реализация класса - как? - PullRequest
1 голос
/ 12 октября 2011

Давайте предположим, что у меня есть класс Object с одним методом, который просто сообщает идентификационный номер экземпляра.Обычно я бы жестко закодировал создание экземпляра класса Object, такого как «Object obj_1», и вызов метода, такого как «obj_1.report»

. Мой вопрос заключается в том, как создать экземпляры объектов процедурно, например, я хочу создатьn объектов, начиная с obj_1, obj_2 и так далее до obj_n.Естественно, я спрашиваю не о фактическом цикле, а о том, как создать экземпляр класса с помощью переменной, но взять значение переменной вместо ее имени и добавить его в префикс obj_.Возможно с кастингом?Также, как мне процедурно вызывать методы конкретных экземпляров, указав только идентификатор.Я думаю, что и создание экземпляра, и вызов метода будут работать одинаково, однако, как новичку, мне трудно понять, как именно это сделать на ходу, а не жестко закодировать.

Заранее спасибо!

РЕДАКТИРОВАТЬ: меня интересует синтаксис C ++

1 Ответ

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

Лучшее решение, которое я могу придумать, - это сохранить ваши объекты на карте, где ваши идентификаторы ("obj_1", "obj_2" и т. Д.) Являются ключами, которые ссылаются на эти экземпляры.

Пример кода Java (поскольку вы не указали язык) будет выглядеть примерно так:

Map<String, Object> objMap = new HashMap<String, Object>();
for(int i = 1; i <= 10; i++) {
    objMap.put("obj_" + 1, new Object());
}

for(int i = 1; i <= 10; i++) {
    if(objMap.containsKey("obj_" + i))
        objMap.get("obj_" + i).report();
}
...