Heim > Backend-Entwicklung > C++ > Hauptteil

Wie rufe ich Typnamen in C-Vorlagen für informative Fehlermeldungen ab?

DDD
Freigeben: 2024-11-16 15:18:03
Original
747 Leute haben es durchsucht

How to Retrieve Type Names in C   Templates for Informative Error Messages?

Typnamen in C-Vorlagen abrufen

Beim Entwickeln von Vorlagenklassen zum Parsen von Daten kann es vorkommen, dass bei Parsingfehlern informative Fehlermeldungen generiert werden müssen. Um umfassende Fehlermeldungen bereitzustellen, müssen Sie möglicherweise den Namen des Typs kennen, in den die Vorlagenfunktion konvertieren möchte.

Der unten bereitgestellte Codeausschnitt zeigt den Originalcode, der versucht, den Typnamen mithilfe von Spezialisierungen abzurufen für Zeichenfolgen:

template<typename T> T GetValue(const std::wstring &amp;section, const std::wstring &amp;key)
{
    std::map<std::wstring, std::wstring>::iterator it = map[section].find(key);
    if(it == map[section].end())
        throw ItemDoesNotExist(file, section, key)
    else
    {
        try{return boost::lexical_cast<T>(it->second);}
        //needs to get the name from T somehow
        catch(...)throw ParseError(file, section, key, it->second, TypeName(T));
    }
}
Nach dem Login kopieren

Eine alternative Lösung beinhaltet die Verwendung von:

typeid(T).name()
Nach dem Login kopieren

Die Funktion typeid(T) gibt eine Instanz von std::type_info zurück, die Zugriff auf den verstümmelten Typnamen bietet von T. Die name()-Methode von std::type_info gibt den entzerrten Typnamen zurück.

Wenn Sie diese Lösung in Ihren Code integrieren, können Sie den Catch-Block wie folgt ändern:

catch(...)throw ParseError(file, section, key, it->second, typeid(T).name());
Nach dem Login kopieren

Dieser Ansatz bietet eine flexiblere und effizientere Möglichkeit, den Typnamen abzurufen, ohne dass explizite Spezialisierungen erforderlich sind.

Das obige ist der detaillierte Inhalt vonWie rufe ich Typnamen in C-Vorlagen für informative Fehlermeldungen ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage