一時オブジェクトを関数に渡したいとします。構造体を使用して、1行のコードと2行のコードでそれを行う方法はありますか?
クラスを使用すると、次のことができます。
class_func(TestClass(5, 7));
与えられた:
class TestClass
{
private:
int a;
short b;
public:
TestClass(int a_a, short a_b) : a(a_a), b(a_b)
{
}
int A() const
{
return a;
}
short B() const
{
return b;
}
};
void class_func(const TestClass & a_class)
{
printf("%d %d\n", a_class.A(), a_class.B());
}
さて、構造体でそれを行うにはどうすればよいですか?私が持っている最も近いものは次のとおりです。
test_struct new_struct = { 5, 7 };
struct_func(new_struct);
与えられた:
struct test_struct
{
int a;
short b;
};
void struct_func(const test_struct & a_struct)
{
printf("%d %d\n", a_struct.a, a_struct.b);
}
オブジェクトはより単純ですが、構造体にコンストラクターを与えずに、関数呼び出しに沿って構造体メンバーの初期化を行う方法があるかどうか疑問に思います。(コンストラクターは必要ありません。私が構造体を使用している理由は、この孤立したケースで定型的な get/set クラス規則を回避するためです。)