Ошибка: недопустимые операнды типов «const char [35]» и «const char [2]» для двоичного «оператора +»
В верхней части моего файла у меня есть
#define AGE "42"
Позже в файле я использую идентификатор несколько раз, включая несколько строк, которые выглядят как
1 std::string name = "Obama";
2 std::string str = "Hello " + name + " you are " + AGE + " years old!";
3 str += "Do you feel " + AGE + " years old?";
Я получаю ошибку:
«ошибка: недопустимые операнды типов« const char [35] »и« const char [2] »для двоичного« оператора + »»
в строке 3. Я провел некоторое исследование и обнаружил, что это было из-за того, как C ++ обрабатывал различные строки и смог исправить это, изменив «AGE» на «string (AGE)». Тем не менее, я случайно пропустил один из экземпляров до сегодняшнего дня, и мне было интересно, почему компилятор не жаловался, хотя у меня все еще был случай, когда это был просто «ВОЗРАСТ».
Путем проб и ошибок я обнаружил, что мне нужно толькоstring(AGE)
в строках, где я не объединяю другую строку, созданную в теле функции.
Мои вопросы таковы: «Что происходит в фоновом режиме, когда C ++ не любит объединять строку со строкой, помещенной туда препроцессором, если вы также не объединяете строку, определенную в функции».