【发布时间】:2011-12-14 21:54:11
【问题描述】:
请看下面的调用和对应的函数,
long pagenumber = 0;
Node *newNode = createNode();
bufMgr->writePage(pageNumber,(char*)newNode);
并且writePage声明如下
writePage(long &pageNumber,char* &node)
writePage 接受长引用和 char* 引用。 上面没有编译,它显示以下错误
no matching function for call to ‘SampleBufferManager::writePage(long int&, char*)’
SampleBufferManager.h:28: note: candidates are: bool SampleBufferManager::writePage(long int&, char*&)
任何人都可以帮助我,如何处理这个问题...类型转换正在解决问题,如果我按照以下方式进行代码编译:
long pagenumber = 0;
Node *newNode = createNode();
char *test = (char*)newNode;
bufMgr->writePage(pageNumber,test);
这个问题怎么解决??
【问题讨论】:
-
你已经解决了如何传递引用的问题。不过,这个实现可能还有其他问题 ;-)
-
等等,那你为什么不想创建一个变量呢?这是你能做到的唯一方法;它不会像现在一样工作,只需要一个演员表。 (如果函数不需要修改
char*,请参见Oli的回答,在这种情况下您不需要创建变量) -
这里的问题是:WRT
char这个函数有什么作用?这个函数真的需要Node *&吗?你能解决它吗?