A ont une hiérarchie de classes qui ressemble somethign comme ceci:Renvoi d'un C++ référence dans une fonction membre const
class AbstractDataType {
public:
virtual int getInfo() = 0;
};
class DataType: public AbstractDataType {
public:
virtual int getInfo() { };
};
class Accessor {
DataType data;
public:
const AbstractDataType& getData() const {
return(data);
}
};
Eh bien, GCC 4.4 Rapports:
En fonction membre « const AbstractDataType & accesseurs :: getData() const ': erreur: initialisation invalide de la référence de type' const AbstractDataType & 'à partir de l'expression de type' const DataType '
Où suis-je mal - est-ce que thi s un cas où je DOIT utiliser un pointeur?
[modifier - fixe des points-virgules]
Je ne vois rien de mal avec ce code, et Comeau et Visual C++ 2010 l'acceptent tous les deux (avec des changements triviaux pour le compiler). –
Fonctionne avec g ++ 4.4.1 – sth
Fonctionne sur g ++ 4.2.4 (modulo les points-virgules manquants dans vos règles de classe) – Stephen