8

次の形式のコンストラクターがあります:

MyClass(int a、int b、int c);

そしてそれはこのようなコードで呼び出されます:

MyClass my_object(4.0、3.14、0.002);

このdoubleからintへの自動変換を防止するか、少なくともコンパイル時に警告を受け取りたいと思います。

この場合、「explicit」キーワードは機能しないようですよね?

4

3 に答える 3

9

あなたのコンパイラは何ですか?gccでは、-Wconversionこれらのタイプの変換について警告するために使用できます。

于 2010-02-19T08:58:20.703 に答える
5

次のようなプライベートコンストラクターを宣言します。

private:
template <class P1, class P2, class P3>
MyClass(P1,P2,P3);

これにより、すべてではない3つのパラメーターを使用する構築でコンパイル時エラーが発生し、int移植可能になります。

于 2010-02-19T09:13:14.283 に答える
2

プライベートMyClass(double a, double b, double c)コンストラクターを宣言します。

于 2010-02-19T08:58:08.737 に答える