3

ファイルの内容全体を(Pythonと同じように)バッファに読み込むことになっているread関数を備えたC++ファイルクラスがあります。ただし、unistd.h から読み取り関数を呼び出そうとすると、次のようになります。

file.cpp:21: エラー: 'File::read(int&, char*&, int)' の呼び出しに一致する関数がありません</p>

file.cpp:17: 注: 候補は: char* File::read()

私は何を間違っていますか?これらはまったく異なるシグネチャを持っています。なぜ単純に呼べないのでしょうか?

4

2 に答える 2

6

スコープについて明示的にしようとしましたか。

char* File::read()
{
   // Double-colon to get to global scope
   ::read(...);
   // ..
}

?

于 2009-07-18T19:25:58.297 に答える
2

read メソッドの posix 標準バージョンの定義は、次のように定義されextern "C"ます。これは、読み取りシンボルが C++ コンパイラによって破壊されず、ライブラリ内の適切な関数にリンクされるようにするために必要です。C と C++ のシンボルを混在させて一致させると、予期しない結果になります。可能であれば、宣言されているシンボルと競合しないように、c++ 関数の名前を変更しextern "C"ます。

于 2009-07-18T19:30:51.907 に答える