这是我关于堆栈溢出的第一篇文章,我希望将来加入社区。
我正在为 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
。