4

なしで関数がオーバーロードされたため、以前に問題がありましたstd::。そして、私はusing namespace std;.

名前空間 std を使用して削除すると、プログラムはがらくたの結果を得る

cに由来し、名前空間の下のc ++関数でのみ動作する非std関数をすべて無効にする方法はありますかstd(使用する必要はありusing namespace std;ません)?

言い換えれば、その間違いをしないようにするのsin()ではなく、使用するとエラーが発生したいのです。std::sin()もちろん、sin だけでなく、 と競合するすべての関数についても同様math.hです。

4

2 に答える 2

8

残念ながら、それを行う方法はありません。ルールは、#include <math.h>すべての名前をグローバル名前空間に配置し、std::. 同様に、#include <cmath>はすべての名前を にstd::入れ、それらをグローバル名前空間に入れることもできます。余分な名前空間を許可する理由は単純に、純粋なバージョンは一般に、C++ コンパイラ関係者の制御下にさえない可能性のある既存のライブラリに大規模な手術を行わなければ実装できないためです。

于 2013-10-03T12:48:54.460 に答える