1

次の呼び出しと対応する関数を見てください。

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);

問題はどのように解決できますか??

4

3 に答える 3

1

何をしwritePageますか?あなたはその機能もコントロールしていますか?constこのアドレスに書き込まれない場合は、2 番目のパラメーターを再宣言すると役立つ場合があります。そうである場合、そしてその名前がどういうわけかそれを示唆している場合Node*、とにかくそれを使用するのが合理的かもしれません。つまり、次のように宣言します

writePage(long &pageNumber, Node* &node)

結局のところ、任意の sによって上書きされたので、NodeポインターがインスタンスでnewNodeはないものを指したくはありません。あなたは?Nodechar

于 2011-12-14T22:06:51.873 に答える