这是问题所在。我编写了这个函数来返回对成员向量的 i 元素的引用,因此可以编辑这个元素。这是代码:
Letter& Literal::get (int i) const {
return lit_m.at (i); //Vector of Letter objects
}
但是 g++ 不允许我将该元素分配给非常量引用:
g++ -o literal.o -c literal.cpp
literal.cpp: In member function ‘Letter& Literal::get(int) const’:
literal.cpp:34: error: invalid initialization of reference of type ‘Letter&’ from expression of type ‘const Letter’
怎么可能解决?我的想法是建立一个像向量的 at() 函数这样的函数,所以它是 const 因为它不编辑对象本身,但它应该让我编辑返回的对象......这可能吗?
已解决:我只需要重载函数:),所以声明一个 const 和一个非常量版本。我担心不允许 const 和非 const 重载,但我看到 const 改变了参数列表,使其成为可能。