J'ai créé un type de données énuméré pour définir les longueurs de vol possibles. Je voudrais surcharger son opérateur < < afin que la représentation soit plus agréable.Impossible de surcharger << pour Enum en C++
Quand je compile, j'obtiens l'erreur (bien affiché pour être complet Fondamentalement multiple definitions of operator <<(ostream&, Categoria&)
.) Suivant:
g++ -oProjectoAEDA.exe src\voo.o src\tui.o src\tripulante.o src\tipoaviao.o src\manga.o src\main.o src\datahora.o src\companhiaaerea.o src\aviao.o src\aeroporto.o
src\tripulante.o: In function `ZlsRSoR9Categoria':
c:/mingw/bin/../lib/gcc/i686-pc-mingw32/4.5.1/../../../../include/c++/4.5.1/new:103: multiple definition of `operator<<(std::ostream&, Categoria&)'
src\voo.o:C:\Users\Francisco\workspace_aeda\ProjectoAEDA\Debug/../src//headers/categoria.h:20: first defined here
src\tipoaviao.o: In function `ZlsRSoR9Categoria':
c:/mingw/bin/../lib/gcc/i686-pc-mingw32/4.5.1/../../../../include/c++/4.5.1/new:103: multiple definition of `operator<<(std::ostream&, Categoria&)'
src\voo.o:C:\Users\Francisco\workspace_aeda\ProjectoAEDA\Debug/../src//headers/categoria.h:20: first defined here
src\manga.o: In function `ZlsRSoR9Categoria':
c:/mingw/bin/../lib/gcc/i686-pc-mingw32/4.5.1/../../../../include/c++/4.5.1/new:103: multiple definition of `operator<<(std::ostream&, Categoria&)'
src\voo.o:C:\Users\Francisco\workspace_aeda\ProjectoAEDA\Debug/../src//headers/categoria.h:20: first defined here
src\main.o: In function `ZlsRSoR9Categoria':
C:\Users\Francisco\workspace_aeda\ProjectoAEDA\Debug/../src//headers/categoria.h:20: multiple definition of `operator<<(std::ostream&, Categoria&)'
src\voo.o:C:\Users\Francisco\workspace_aeda\ProjectoAEDA\Debug/../src//headers/categoria.h:20: first defined here
src\companhiaaerea.o: In function `ZlsRSoR9Categoria':
c:/mingw/bin/../lib/gcc/i686-pc-mingw32/4.5.1/../../../../include/c++/4.5.1/new:103: multiple definition of `operator<<(std::ostream&, Categoria&)'
src\voo.o:C:\Users\Francisco\workspace_aeda\ProjectoAEDA\Debug/../src//headers/categoria.h:20: first defined here
src\aviao.o: In function `ZlsRSoR9Categoria':
c:/mingw/bin/../lib/gcc/i686-pc-mingw32/4.5.1/../../../../include/c++/4.5.1/new:103: multiple definition of `operator<<(std::ostream&, Categoria&)'
src\voo.o:C:\Users\Francisco\workspace_aeda\ProjectoAEDA\Debug/../src//headers/categoria.h:20: first defined here
src\aeroporto.o: In function `ZlsRSoR9Categoria':
c:/mingw/bin/../lib/gcc/i686-pc-mingw32/4.5.1/../../../../include/c++/4.5.1/new:103: multiple definition of `operator<<(std::ostream&, Categoria&)'
src\voo.o:C:\Users\Francisco\workspace_aeda\ProjectoAEDA\Debug/../src//headers/categoria.h:20: first defined here
collect2: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 928 ms.
Ceci est le fichier de données où les deux ENUM est déclarée et l'opérateur surchargé.
/*
* categoria.h
*
* Created on: 9 de Out de 2010
* Author: Francisco
*/
#ifndef CATEGORIA_H_
#define CATEGORIA_H_
#include <iostream>
enum Categoria {
LongoCurso,
MedioCurso,
Domestico
};
std::ostream& operator<<(std::ostream & os, Categoria & cat)
{
switch (cat) {
case LongoCurso:
os << "Longo Curso";
break;
case MedioCurso:
os << "Medio Curso";
break;
case Domestico:
os << "Domestico";
}
return os;
}
#endif /* CATEGORIA_H_ */
EDIT: Je essayé référence const, const en valeur et la valeur non const. Aucun compilé
Accepté, merci. –
"sacrément, je ne peux pas le voir ici pendant l'édition": pendant l'édition, il y a une barre grise sous le titre de la question que vous pouvez faire glisser pour révéler autant de texte de la question que nécessaire. –
@Cheersandhth "anum" devrait être "enum" dans cette réponse. Je n'ai pas assez de rep pour faire un montage aussi petit. –