我正在为大学做一项实际作业,但遇到了一个问题。
我有一个声明此方法的类:
bool graficarTablero(const Tablero *&tablero, const string &nombreArchivo);
我想通过常量引用传递指向对象 Tablero 的指针。
如果我调用该函数,例如:
ArchivoGrafico *grafico = new ArchivoGrafico;
if(grafico->graficarTablero(tablero, ARCHIVO_GRAFICO)){ ...
...我收到编译错误。好的,我不会详细说明我遇到的错误,因为我认为我已经找到了解决方案,方法是将方法头替换为:
bool graficarTablero(Tablero* const& tablero, const string &nombreArchivo);
现在似乎可以工作(至少现在可以编译),但我想知道为什么第一个声明不起作用而第二个声明起作用。好吧,更重要的是我真正想知道它们是否实际上意味着相同的事情(通过常量引用指向对象的指针)。
嗯,谢谢你的回答。
编辑1:
我想做的是避免按值传递。
好吧,我知道这并不是一个真正昂贵的操作,但是真的没有办法使用相同的指针并保证它不会以任何方式修改吗?
Thanks.
编辑2:
抱歉,我没有仔细阅读杰里·科芬的回答。
是的,这就是我一直在寻找的。这并不是说我真的必须这样做,但有一天我可能会发现这个小小的优化很有用。