class logger {
....
};
logger& operator<<(logger& log, const std::string& str)
{
cout << "My Log: " << str << endl;
return log;
}
logger log;
log << "Lexicon Starting";
Fonctionne bien, mais je souhaite utiliser un pointeur vers une instance de classe à la place. c'est-à-direSurcharge << opérateur C++ - Pointeur vers la classe
logger * log = new log();
log << "Lexicon Starting";
Est-ce possible? Si oui, quelle est la syntaxe? Merci
Edit: L'erreur du compilateur est
error: invalid operands of types 'logger*' and 'const char [17]' to binary 'operator<<'
Convenu. Créez l'enregistreur pendant l'initialisation du programme, puis fournissez un moyen d'obtenir une référence plutôt qu'un pointeur. Vous pouvez également utiliser std :: cerr en tant que votre enregistreur en le rouvrant pour pointer vers un fichier (bien que cela nécessite un peu de travail car il est légèrement hacky :) – workmad3
Oh, et assurez-vous d'utiliser des parenthèses correctes. log && ((* log) << "Démarrage du Lexicon") pour que les choses se passent bien :) – workmad3
Bonne idée, merci de l'avoir signalé ... –