这是问题所在。我写了这个函数来返回一个对成员向量的i元素的引用,所以这个元素可以被编辑。下面是代码:如何编写一个返回对成员对象引用的const访问器,以便它可以被编辑?
Letter& Literal::get (int i) const {
return lit_m.at (i); //Vector of Letter objects
}
但G ++不会让我这个元素赋值给一个非const引用:
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’
怎么可能解决呢?我的想法是建立一个像vector的at()函数那样的函数,所以它会是const的,因为它不会编辑对象本身,但是它应该让我编辑返回的对象......可能吗?
解决:我只是重载函数:),所以声明一个const和一个非const版本。我担心const和non-const重载是不允许的,但是我看到const改变了参数列表,使得它成为可能。
其实你已经给他解决方案。只要指针永远不会为NULL,您可以对其进行解引用。 – CashCow 2010-10-20 15:52:37
我不确定它是否有效,因为我在考虑它是否是一个const方法,它可能实际上会返回'Letter * const'或'const Letter *',而在第二种情况下,他会处于相同的状态像以前一样。 – Anthony 2010-10-20 15:54:17