J'ai un constructeur de classe qui s'attend à ce qu'une référence à un autre objet de classe lui soit transmise comme argument. Je comprends que les références sont préférables aux pointeurs lorsqu'aucune arithmétique de pointeur n'est effectuée ou lorsqu'une valeur nulle n'existe pas.
Il s'agit de la déclaration d'en-tête du constructeur :
class MixerLine {
private:
MIXERLINE _mixerLine;
public:
MixerLine(const MixerDevice& const parentMixer, DWORD destinationIndex);
~MixerLine();
}
Voici le code qui appelle le constructeur (MixerDevice.cpp) :
void MixerDevice::enumerateLines() {
DWORD numLines = getDestinationCount();
for(DWORD i=0;i<numLines;i++) {
MixerLine mixerLine( this, i );
// other code here removed
}
}
La compilation de MixerDevice.cpp échoue avec cette erreur :
Erreur 3 erreur C2664 : 'MixerLine::MixerLine(const MixerDevice &,DWORD)' : impossible de convertir le paramètre 1 de 'MixerDevice *const ' en 'const MixerDevice &'
Mais je pensais que les valeurs des pointeurs pouvaient être affectées à des références, par exemple
Foo* foo = new Foo();
Foo& bar = foo;