这是我关于堆栈溢出的第一篇文章,我希望将来加入社区。 p>
我正在为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。
答案 0 :(得分:2)
需要声明访问者RecordType::getPhone()
const
。
答案 1 :(得分:0)
这对我来说纯粹是一种语法错误。在我的睡眠中被剥夺了愚蠢的我输入:
Const int getPhone() {return customerPhoneNumber;};
而不是
int getPhone() const {return customerPhoneNumber;};
愚蠢