たとえば、RECTと、RECTをパラメーターとして持ついくつかのサブがあります
RECT wr = {0, 0, somevar1, somevar2};
someSub(wr);
私はRECTを他のどこにも必要としないので、サブに送信するときに初期化する方法はありますか? 何かのようなもの
someSub(RECT {0, 0, somevar1, somevar2}); <- doesnt work :(
ああ、vs2010 を使用してコンパイルします
たとえば、RECTと、RECTをパラメーターとして持ついくつかのサブがあります
RECT wr = {0, 0, somevar1, somevar2};
someSub(wr);
私はRECTを他のどこにも必要としないので、サブに送信するときに初期化する方法はありますか? 何かのようなもの
someSub(RECT {0, 0, somevar1, somevar2}); <- doesnt work :(
ああ、vs2010 を使用してコンパイルします
私が過去に行ったことは、コンストラクターを使用してサブ構造体を作成することです。
struct Rect : RECT
{
Rect(long l, long t, long r, long b)
{
left = l;
top = t;
right = r;
bottom = b;
}
};
someSub(Rect(a, b, c, d));
コンストラクターがあるため、Rect
それ自体は POD ではありませんが、関数に渡すときに(または) にスプライシングまたはダウンキャストされます。RECT
RECT&
当然、これを見ると、関数を作成するのと同じです。
RECT Rect(long l, long t, long r, long b)
{
RECT r = {l, t, r, b};
return r;
}
構文も同じです!しかし、コンストラクターのほうがいくらか気分が良くなります。
C++11 では、呼び出しで構造体をインライン化できます。
func({0, 0, somevar1, somevar2});
C/C++ の古いバージョンでは、構造体を初期化して結果を返すヘルパー関数を作成できます。
inline RECT new_RECT(int a, int b, int c, int d)
{
RECT ret = {a, b, c, d};
return ret;
}
次に、次のように呼び出すことができます。
func(new_RECT(a, b, c, d));
構造体の作成は、コンパイラによってインライン化される必要があります。