c – 错误C2662无法从const转换为引用

这是我关于堆栈溢出的第一篇文章,我希望将来加入社区.

我正在为ADT类编写哈希表实现;我的大多数方法都在作业范围内达到标准,但这让我感到悲伤.

在我编写的这个测试应用程序中,我一直用它来测试各种函数,我收到错误“错误C2662:’customer :: getPhone’:无法将’this’ponter从’const customer’转换为’customer&’ ;”参考线条
“cursor = find_ptr(entry.getPhone());”

“list_head_insert(data [hash(entry.getPhone())],entry);”

我的函数代码实现如下:

    template <class RecordType>
void table<RecordType>::insert(const RecordType& entry){

    node<RecordType>* cursor;
    cursor = find_ptr(entry.getPhone());

    if(cursor == NULL) {
        list_head_insert(data[hash(entry.getPhone())], entry);
        ++total_records;
    }
    else
        cursor->set_data(entry);

}    

在这种情况下,getPhone引用整数私有变量的访问器,没什么特别的.

最后,对于我的主要测试应用程序:

#include "Table2.h"
#include "Customer.h";
using namespace std;

int main () {

    customer myCustomer( "name", "935 street dr.", 5555555 );
    table<customer> myTable;
    cout << myCustomer;

    myTable.insert(myCustomer);


    return 0;
}

令人沮丧的是,这段代码在文本中都是逐字使用的,在我收到编译错误后查看的几个在线示例中也是如此;任何帮助将不胜感激,如果需要,我很乐意澄清任何事情.我正在运行VS express 2012 for desktop.

最佳答案 存取器RecordType :: getPhone()需要声明为const.

点赞