[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