как преобразовать строковый массив в символ ** - PullRequest
0 голосов
/ 30 января 2019

Я хочу отправить значения вручную здесь

void processArgs(int argc, char** argv);

если я отправляю вот так * Компилятор

char* cwd[] = {"./comDaemon", "--loggg=pluginFramework:debug"};

parser->processArgs(2, cwd);

показывает предупреждение как

предупреждение: ISO C ++ запрещает преобразованиестроковая константа 'char *' [-Wwrite-strings]

 char* cwd[] = {"./comDaemon", "--loggg=pluginFramework:debug"};

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Другие отметили, что проблема в том, что вы пытаетесь передать строковые литералы (которые являются константными) в функцию, которая принимает неконстантный аргумент char **.Если вам нужно создать неконстантные строки, которые вы можете передать в свою неконстантную функцию arg, вам нужны явные массивы символов (которые можно инициализировать строковыми литералами):

char arg0[] = "./comDaemon";
char arg1[] = "--loggg=pluginFramework:debug";
char *cwd[] = { arg0, arg1 };

вы можете дажесделать все это в одной строке:

char arg0[] = "./comDaemon", arg1[] = "--loggg=pluginFramework:debug", *cwd[] = { arg0, arg1 };
0 голосов
/ 30 января 2019

Если функция, которую вы передаете cwd, ожидает аргумент char ** вместо const char **, то есть один способ:

    char *cwd[] = { const_cast<char *>("value1"), const_cast<char *>("value2") };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...