J'ai une classe Terminallog qui surcharge l'opérateur < <. Si je fais ce qui suitL'opérateur "<<" à un pointeur
Terminallog clog(3);
clog << "stackoverflow.com is cool" << endl;
tout fonctionne bien. "stackoverflow.com is cool" est imprimé d'une belle manière colorée à l'écran, exactement ce que Terminallog est censé faire.
Maintenant, j'essaie
Terminallog* clog = new Terminallog(3);
clog << "stackoverflow.com is cool" << endl;
qui me donne une erreur de compilation:
error: invalid operands of types ‘Terminallog*’ and ‘const char [5]’ to binary ‘operator<<’
je peux voir qu'il est un problème qui passe l'opérateur « < < » à un pointeur, mais comment obtenir le même comportement qu'avec la version non pointer? Je pourrais simplement déréférencer le pointeur, mais cela créerait une copie locale de l'objet (ce qui n'est pas bon pour la performance n'est-ce pas?)
Par conséquent, je me demande quelle est la bonne façon de le faire?
Merci à l'avance
ftiaronsem
Je ne pense pas que le déréférencement du pointeur crée une copie locale de l'objet. –