У меня есть конструктор класса, который ожидает ссылки на другой объект класса, который будет передан в качестве аргумента. Я понимаю, что ссылки предпочтительнее указателей, когда не выполняется арифметика указателя или когда нулевое значение не будет существовать.C++ Передача `this` в метод по ссылке
Это объявление заголовка конструктора:
class MixerLine {
private:
MIXERLINE _mixerLine;
public:
MixerLine(const MixerDevice& const parentMixer, DWORD destinationIndex);
~MixerLine();
}
Это код, который вызывает конструктор (MixerDevice.cpp):
void MixerDevice::enumerateLines() {
DWORD numLines = getDestinationCount();
for(DWORD i=0;i<numLines;i++) {
MixerLine mixerLine(this, i);
// other code here removed
}
}
Составление MixerDevice.cpp терпит неудачу с этой ошибкой :
Error 3 error C2664: 'MixerLine::MixerLine(const MixerDevice &,DWORD)' : cannot convert parameter 1 from 'MixerDevice *const ' to 'const MixerDevice &'
Но я думал, что значения указателей могут быть назначены указателям, например
Foo* foo = new Foo();
Foo& bar = foo;
'const MixerDevice & const parentMixer' второй' const' не нужен, поскольку ссылки (в отличие от указателей) не могут быть повторно установлены для ссылки на другой объект. – Praetorian