2

私は、すべてのクラス内で「open」および「close」と呼ばれる関数を使用する、いくつかの厄介な C++ Windows コードを Linux に移植しています...非常に悪いスタイルですか、それとも? 幸いなことに、Windows ではシステムコールの名前が異なるため、これは問題ではありませんでした。

systemcalls open() または close() を呼び出そうとすると、「クラス:open() の呼び出しに一致する関数がありません」というコンパイラ エラーが発生します。コード全体で「class::open」および「class::close」という名前のすべての関数の名前を変更することはできません。また、シリアル ポートで作業しているため、open() および close() を使用する必要があります。

だから私の質問は次のとおりです。コンパイラーに、どのオープンを意味するかをどのように伝えることができますか? C++ でクラスの名前空間をエスケープまたは非表示にするにはどうすればよいですか?

4

3 に答える 3

8

を使用して、グローバル名前空間::openを参照できます。open

于 2010-03-24T12:21:22.113 に答える
1

スコープ解決演算子を使用して、グローバル バリアント::openとを示すことができます::close

于 2010-03-24T12:21:46.560 に答える
1

::open() を呼び出すと、グローバル関数、つまりシステム コールが呼び出されます。

于 2010-03-24T12:22:14.030 に答える