我有一个类构造函数,期望引用另一个类对象作为参数传入 . 据我所知,当没有执行指针算术或不存在空值时,引用优于指针 .
这是构造函数的头声明:
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的编译失败,出现此错误:
错误3错误C2664:'MixerLine :: MixerLine(const MixerDevice&,DWORD)':无法将参数1从'MixerDevice * const'转换为'const MixerDevice&'
但我认为指针值可以分配给指针,例如
Foo* foo = new Foo();
Foo& bar = foo;
4 回答
this
是一个指针,用于获取必须取消引用的引用(*this
)它:您应该取消引用
this
,因为this
是指针,而不是引用 . 要更正你的代码,你应该写Note: 构造函数参数
const MixerDevice& const parentMixer
中的第二个const
完全没用 .要从指针获取引用,您需要取消引用指针,如已经提到的那样 . 另外(可能是由于复制到问题?)构造函数不应该编译:
这不是一个合适的类型,引用不能是const限定的,只有引用的类型可以,所以两个(完全等价的)选项是:
(注意
MixerDevice
的const
资格可以在任何一种方式完成,它意味着完全相同) .指针值可以分配给指针,但不能分配给引用!1
1.好吧,它们可以用来初始化引用指针,但这不是你在这里所拥有的......