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

时间:2013-12-02 01:36:20

标签: c++ const hashtable

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

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

在我编写的这个测试应用程序中,我一直用来测试各种函数,我收到错误“错误C2662:'customer :: getPhone':无法将'this'ponter从'const 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。

2 个答案:

答案 0 :(得分:2)

需要声明访问者RecordType::getPhone() const

答案 1 :(得分:0)

这对我来说纯粹是一种语法错误。在我的睡眠中被剥夺了愚蠢的我输入:

Const int getPhone() {return customerPhoneNumber;}; 

而不是

int getPhone() const {return customerPhoneNumber;};

愚蠢