Dessa vez não montei um exemplo pra perguntar, mas se for necessário faço isso.
Eu desenvolvi um código em C que lê um arquivo para uma Struct. Ele funciona!
Agora estou tentando fazer esse mesmo código funcionar em C++, e sendo C++ mais exigente, estou tendo dificuldades de encontrar a solução.
Tenho um strcat bugado que adiciona um caracter de cada vez para a variável Registered, igual a std::string Registered += Character; mas no caso abaixo ele é um vetor de char.
Abaixo o erro do Debug que não estou sabendo como consertar:
database.cpp:56:64: error: ISO C++ forbids compound-literals [-Wpedantic]
56 | strcat(Registered, (char[2]) {Character, '\0'});
| ^
database.cpp:56:49: error: narrowing conversion of ‘Character’ from ‘int’ to ‘char’ [-Wnarrowing]
56 | strcat(Registered, (char[2]) {Character, '\0'});
| ^~~~~~~~~
database.cpp:56:48: error: taking address of temporary array
56 | strcat(Registered, (char[2]) {Character, '\0'});
| ^~~~~~~~~~~~~~~~~
Posso compreender que usar std::string é mais simples, mas meu intuito é saber consertar o problema porque neste momento eu quero rodar código C no C++, me dando a opção de compilar em C ou C++, por isso eu gostaria de consertar o strcat no C++ de forma que esse conserto rode também em C. Meu motivo pra isso é apenas aprendizado, baseado em testes, saber o que posso fazer e entender isso.
Porque não entendi?
1) Não entendi quando ele se refere a compound-literals
2) Não entendi narrowing que é o motivo dele não aceitar a conversão
3) Creio que o 3o Erro tenha a ver com o 2o Erro