IntelliSense: выражение должно иметь тип целого или перечисления

Ребята, мне нужно, чтобы кто-то решил эту проблему? когда я компилирую этот код, у меня появляется эта ошибка:

 Error: IntelliSense: expression must have integral or enum type

у меня есть проблемы в этой части:

Console(0, V("seta sv_hostname " + servername + ";\n"));

так как я могу это исправить

if (strncmp(command, V("exec config_mp"), 14) == 0)
{
if (GAME_MODE == 'D')
{
CIniReader iniReader(V(".\\teknogods.ini"));
char *servername = iniReader.ReadString(V("Settings"),V("Servername"),"");

if (strcmp(servername,"") == 0)
{
info("Server name set to defult.");
}
else
{
//Console(0, V("seta scr_teambalance 1;\n"));
Console(0, V("seta sv_hostname " + servername + ";\n"));
info("server name set to: %s.", servername);
}
}
}

0

Решение

Вы не можете объединить две строки C с +,

В C и C ++ строковые литералы представляют собой массивы символов, которые при использовании в качестве значения r в выражении превращаются в указатель на символ. В C (и C ++) вы можете выполнять арифметику указателей, что означает, что вы можете добавить или вычесть целое число (или любой целочисленный тип) из указателя, а также вы можете вычесть два указателя, чтобы получить разницу, но вы не можете добавить два указателя вместе , Выражение "A" + "B" неверно, так как это будет пытаться добавить два const char*, Это то, что говорит вам компилятор: для выражения "seta sv_hostname " + servername чтобы быть правильным, servername должно быть целым числом или перечислением.

Если кодирование C ++ вы можете использовать std::string, для которых есть перегружены operator+ что либо другое std::string или же const char* а затем использовать c_str функция-член для извлечения const char* использовать в интерфейсах, которые требуют C строк.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]