C ++: Как динамически добавить суффикс к строке текста в цикле for, чтобы создать ранее объявленную переменную - PullRequest
1 голос
/ 07 марта 2019

Кто-нибудь знает, как можно добавить значение переменной в строку текста в цикле for для проверки этой переменной?

for (int i = 0; i < 16; i++)
{
    rendTarX = BUTTONCOLOR(i); //
    rendTarY = BUTTONCOLOR(i);
    writeUserInterfaceToBuffer(consoleBuffer, BUTTONCOLOR(i).chars, 
                               BUTTONCOLO(i)0.colors, BUTTONCOLOR(i).nWidth, 
                               BUTTONCOLOR(i).nHeight, rendTarX, rendTarY, 
                               userColor);
}

У меня всего 16 кнопок, и я хочу написать ихк экранному буферу

Все их имена начинаются с 'BUTTONCOLOR' и заканчиваются числом от '0' до '15'.

Заранее благодарим за любые ответы.

Ответы [ 2 ]

1 голос
/ 07 марта 2019

Лучший способ сделать это, вероятно, использовать массив и обращаться к нему по индексу:

std::array<int, 16> BUTTONCOLORS = {BUTTONCOLORSX00, BUTTONCOLORSX01, ..., BUTTONCOLORSX15};

BUTTONCOLORS[i] даст вам необходимую переменную.

Если вы ДЕЙСТВИТЕЛЬНО хотите объединить переменную, вы можете использовать макрос:

#define _BUTTONCOLORS(n) BUTTONCOLORSX##n
#define BUTTONCOLORS(n) _BUTTONCOLORS(n)

BUTTONCOLORS(1) будет разрешено в препроцессоре как BUTTONCOLORSX1 и BUTTONCOLORS(2) будет разрешен в препроцессоре как BUTTONCOLORSX2.

Вам понадобится цикл времени компиляции для разрешения макросов, чтобы вы не могли использовать цикл for. У вас есть , чтобы выполнять цикл и в макросе (поскольку все решается на этапе препроцессора).

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

0 голосов
/ 07 марта 2019

Вместо того, чтобы объявлять 16 переменных с одинаковыми именами, объявите один массив.

std::array<Color, 16> ButtonColors;

Если у вас есть начальные значения, предоставьте их все за один раз

std::array<Color, 16> ButtonColors = { 1, 4, 9, 16, 25, ... }; // or whatever initialises Colors
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...