É possível em c ++ obter como uma string o nome de uma variável que foi passada como um parâmetro?
Nov 29 2020
Eu gostaria de poder fazer algo assim
int myVar = 3;
void logger(int param) {
std::cout << nameOf(param) << ": " << param << std::endl;
}
logger(myVar); // prints "myVar: 3"
Respostas
4 cigien Nov 29 2020 at 19:14
Não, você ainda não pode fazer isso na linguagem C ++, pois não há facilidade de reflexão para fazer isso.
No entanto, você pode usar macros de pré-processador para obter o efeito desejado. Observe que as macros são perigosas e devem ser evitadas tanto quanto possível.
Primeiro, escreva uma função de implementação que leve o valor do parâmetro e o nome do parâmetro, como este:
void logger_impl(int param, std::string param_name) {
std::cout << param_name << ": " << param << std::endl;
}
Em seguida, você pode escrever uma macro que gera uma string a partir do nome da variável no site de chamada, usando #
(o operador de stringificação) e, em seguida, usa essa string na chamada para a função de implementação:
#define logger(p) logger_impl(p, #p)
Aqui está uma demonstração .
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas