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