Схемы именования переменных для объектов в C ++? - PullRequest
2 голосов
/ 19 октября 2008

Я внедряю BFS, и он собирается пройти через упорядоченное дерево, чтобы найти кратчайшее решение головоломки.

То, что я буду делать, - это создание объекта «Снимок», в котором хранится текущая позиция каждой части головоломки. Я добавлю этот объект Snapshot в очередь и проверю, является ли это решением. Тем не менее, я создаю эти снимки на лету. Так есть ли какой-нибудь способ, который автоматически генерирует имена объектов Snapshot, когда они помещаются в очередь?

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

Снимок снимка 2; Снимок снимок3; Снимок снимок4; и т.д ..

Ответы [ 6 ]

4 голосов
/ 19 октября 2008

Я думаю, вы спрашиваете, как вы создаете и храните много объектов, когда не знаете, сколько их будет.

Вам необходимо создать массив объектов. Затем вы можете получить к ним доступ как снимок [1], снимок [2] ... снимок [i].

1 голос
/ 19 октября 2008

Есть способ - вы используете Оператор вставки токена препроцессора . Это позволяет вам создать имя на основе переменной, поэтому вы должны указать:

#define S(variable) snapshot#variable

и вы сможете создавать переменные с именами snapshot1, snapshot2 и т. Д .:

Snapshot S(1)
Snapshot S(2)

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

0 голосов
/ 19 октября 2008

Вы не можете динамически создавать имена переменных в C ++, по крайней мере без некоторого (воображаемого?) Дополнения.

edit: Помимо этого, я выполнил задание, которое, как я полагаю, похоже на ваше в классе AI, где мы рассмотрели основы, такие как BFS, DFS и A *. Ни разу не было необходимости иметь уникально именованные объекты для «снимков», и я использовал очереди.

edit2: и если вам нужно отслеживать, сколько у вас снимков, создайте переменную count, которая увеличивается каждый раз, когда вы создаете объект.

0 голосов
/ 19 октября 2008

Извините, но вся эта очередь вызывает ненужное замешательство.

Давайте рассмотрим другой пример. Таким образом, для этой головоломки, количество частей в головоломке определяется пользователем. Я создаю программу так, что каждый кусочек головоломки - это его собственный объект.

Поэтому, когда я приступаю к созданию этих пьес, могу ли я использовать какие-то схемы именования переменных для обозначения этих фигур. так как то просто в качестве примера ...

for (int i-0; i < constraint; i++)
Piece "Piece"+i = new Piece();
0 голосов
/ 19 октября 2008

Я думаю, нам нужно больше информации для этого. Если вы просто выводите их из очереди, почему вас волнует, как они называются? Объекты в очереди обычно не нумеруются, если вы не реализуете их в массиве.

0 голосов
/ 19 октября 2008

Вы можете использовать очередь из стандартной библиотеки шаблонов, а затем создать функцию, которая создает объект Snapshot и помещает в очередь. Присвойте этой функции статическую переменную, которая увеличивается каждый раз, когда она вызывается и записывается в поле id снимка.

http://www.csci.csusb.edu/dick/samples/stl.html

http://www.cppreference.com/wiki/stl/queue/start

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