1

構造体の属性 x と y を入力する必要があります。多くのメンバー (x、y...) があり、それらのすべてが同じ属性 (読み取り、書き込みなど) を持っていることを考えると、とにかくこれよりも短い方法でこれを行うことができますか?

features.x.Read = GetAttribute(node,"x","Read",HexValue);
features.x.Write = GetAttribute(node,"x","Write",HexValue);
features.x.address = GetAttribute(node,"x","address",HexValue);
features.x.value = GetAttribute(node,"x","value",HexValue);

features.y.Read = GetAttribute(node,"y","Read",HexValue);
features.y.Write = GetAttribute(node,"y","Write",HexValue);
features.y.address = GetAttribute(node,"y","address",HexValue);
features.y.value = GetAttribute(node,"y","value",HexValue);

ありがとうございました

4

3 に答える 3

9

このように多分

void set_members(Whatever& member, const char* name)
{
    member.Read = GetAttribute(node, name, "Read", HexValue);
    member.Write = GetAttribute(node, name, "Write", HexValue);
    member.address = GetAttribute(node, name, "address", HexValue);
    member.value = GetAttribute(node, name, "value", HexValue);
}

set_members(feature.x, "x");
set_members(feature.y, "y");

Whateverどうあるべきかわかりませんが、それを理解することはできます。多分それをテンプレート化されたタイプにすることさえあります。

于 2013-09-03T09:58:31.023 に答える
3

C と C++ の両方に集約初期化があります: C スタイルを示します: http://ideone.com/EXKtCo

struct X
{
   int some;
   const char* really_long;
   double and_annoying_variable_names;
};

int main()
{
    struct X x = { 42, "hello world", 3.14 };
    // reassign:
    struct X y = { 0, "dummy", 0.0 };
    x = y;


    return 0;
}
于 2013-09-03T10:03:23.517 に答える