[linux-l] C++ / g++: wirres Casting-Problem
Steffen Dettmer
steffen at dett.de
Fr Feb 24 00:16:03 CET 2006
* Volker Wegert wrote on Thu, Feb 23, 2006 at 22:04 +0100:
> Hallo zusammen,
>
> irgendwie seh ich hier den Wald vor lauter Bäumen nicht mehr. Auf meinem
> Rechner kann ich eine C++-Datei, die die Anweisung
>
> logger = Logger::getLogger("DQT");
>
> enthält, vollkommen problemlos übersetzen. Jetzt bekam ich eine Mail, in der
> ein Interessent an dem Projekt beschrieb, daß sein Compiler zu dieser Zeile
> einen Fehler ausspuckt:
>
> DQT.cpp:55: error: no matching function for call to `log4cxx::Logger::getLogger
> (const char[4])'
> /usr/include/log4cxx/logger.h:295: error: candidates are: static
> log4cxx::LoggerPtr log4cxx::Logger::getLogger(const log4cxx::String&)
Wie sieht der Constructor von log4cxx::String aus?
log4cxx ist ja interessant. Schade nur, dass man scheinbar das Java nur
portiert hat, ohne die Vorteile von C++ zu nutzen.
#define LOG4CXX_DEBUG(logger, msg) ...
ist ja nu wirklich Schade... Oder hat das einen tieferen Sinn?
(
Wir (Ingenico) haben was ähnlich zur JDK-1.4 Logging-API
implementiert, da geht
logger << ilog::INFO << "hallo: zahl=" << 4 << logEnd;
und logger ist ne Referenz :-)
)
> Kann mir vielleicht irgendjemand einen Tip geben, was da schiefläuft? Ich hab
> keine Idee mehr, wonach ich da suchen sollte - oder ich habe was
> absolut offensichtliches übersehen...
Bei ganz harten Fällen hilft einem manchmal auch g++ -E (statt -c)
weiter: preprocessor output. Gerade wenn man viel defines hat...
Warum kann man eigentlich kein std::string nehmen, sondern muss
log4cxx::String definieren? QT hat auch eigenen String, soweit ich
weiss. Weiss jemand, warum?
oki,
Steffen
--
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.
Mehr Informationen über die Mailingliste linux-l