5
#include <iostream>

struct Foo
{
    Foo(int d) : x(d) {}
    int x;
};

int main() 
{ 
    double x = 3.14;

    Foo f( int(x) );

    std::cout << f.x << std::endl;

    return 0;
}

このコードをコンパイルすると、次のエラーが発生します。

[エラー] 'f' 内のメンバー 'x' の要求は、非クラス型 'Foo(int)' です

int mainを削除するintとしFoo f(int(x))ます。つまり、次のように書くと:

     Foo f(x);

コードは正しくコンパイルされ、出力は 3 になりました。

コンストラクターを呼び出すためにFoo f(int(x))のような引数を型キャストするとどうなるでしょうか?

4

3 に答える 3

0

int(x)あなたが適切にキャストする方法ではありません。(int)(x)または(int)xあなたの特定のケースでうまくいくと思います。それから始めて、まだ問題がある場合はお知らせください。

于 2013-06-25T14:26:01.797 に答える