"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > As strings de estilo C podem ser usadas como argumentos de modelo em C++?

As strings de estilo C podem ser usadas como argumentos de modelo em C++?

Publicado em 2024-11-14
Navegar:918

Can C-Style Strings Be Used as Template Arguments in C  ?

As strings de estilo C podem ser argumentos de modelo?

Sua tentativa de instanciar um modelo usando uma string de estilo C falha com um erro devido ao uso inválido de uma string literal como argumento de modelo.

Embora as strings de estilo C não possam servir diretamente como argumentos de modelo, existem abordagens alternativas:

Use um ponteiro para um String constante

Uma solução alternativa é usar um ponteiro para uma string constante como argumento do modelo:

template 
struct X {
    const char *GetString() const {
        return str;
    }
};

char global_string[] = "String";

int main() {
    X x;
    cout 

Atualização: literais de string como argumentos de modelo com C 11

Com C 11 e posterior, é possível usar literais de string como argumentos de modelo utilizando pacotes de caracteres:

template 
struct X {
    const char (*GetString)() {
        return [](char*... s) { return s; }(c...);
    }
};

int main() {
    X x;
    cout 
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3