#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))のような引数を型キャストするとどうなるでしょうか?