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

我正在为 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 指的是一个整数私有(private)变量的访问器,没什么特别的。

最后,对于我的主要测试应用程序:
#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。

最佳答案

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

10-08 12:42