2016-11-25 6 views
0

У меня есть программа с 4 объектами класса, скажем PO1, PO2, PO3, PO4. Я хочу вызвать некоторые функции, берущие эти объекты в качестве параметров в цикле for. Как так:C++ Макро использовать значения переменных

Я попытался токены склеивания, но все, что я получил пои, вместо того, чтобы значение I. Есть ли способ сделать это? (Макро, функция и т.д.)

Вот мой код

Player PO[4] = {Player{'l',WHITE}, 
       Player{'l',WHITE}, 
       Player{'l',WHITE}, 
       Player{'l',WHITE} 
       }; 

'л' и БЕЛАЯ являются параметрами.

+1

Правильный способ сделать это, чтобы использовать массив, вместо «РО1», «РО2», «PO3», и «PO4». Это то, для чего нужны массивы (или векторы). –

+0

К сожалению, каждый из объектов имеет конструктор, отличный от стандартного. – user2505282

+0

Как я уже сказал: используйте массив. Вы знаете, у вас может быть массив объектов с конструкторами, отличными от по умолчанию. Или, альтернативно, массив ссылок на четыре объекта. Это тоже сработает. –

ответ

1

на основе @ SamVarshavchik свой комментарий, я получил решение.

Здесь,

Player *PK[4] = {&PO1,&PO2,&PO3,&PO4}; 
for(int i = 0; i < 4; i++}{ 
    func(*PK[i]); 
} 
0

Используйте массив или std::vector вместо

MyObject Pos[4] = {MyObject{42}, MyObject{51}, MyObject{21}, MyObject{12}}; 

for (auto& po : Pos) { 
    func(Po); 
} 
+0

Подождите. Позвольте мне просто попробовать это. Кажется, не работает. Я просто напечатаю ошибки, которые получаю. – user2505282

+0

1) Инициализация только частично заключена в квадратные скобки. 2) Неправильное использование typedef MyObject (Имя класса) – user2505282

+0

Вы упустили '}' или, может быть, ')' где-то. – Peter

Смежные вопросы