diff --git a/samples/monster_generated.h b/samples/monster_generated.h index 783d1c7f0..60a8d3f61 100644 --- a/samples/monster_generated.h +++ b/samples/monster_generated.h @@ -198,7 +198,7 @@ inline flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder const std::vector> *weapons = nullptr, Equipment equipped_type = Equipment_NONE, flatbuffers::Offset equipped = 0) { - return CreateMonster(_fbb, pos, mana, hp, name ? 0 : _fbb.CreateString(name), inventory ? 0 : _fbb.CreateVector(*inventory), color, weapons ? 0 : _fbb.CreateVector>(*weapons), equipped_type, equipped); + return CreateMonster(_fbb, pos, mana, hp, name ? _fbb.CreateString(name) : 0, inventory ? _fbb.CreateVector(*inventory) : 0, color, weapons ? _fbb.CreateVector>(*weapons) : 0, equipped_type, equipped); } inline flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o); @@ -252,7 +252,7 @@ inline flatbuffers::Offset CreateWeapon(flatbuffers::FlatBufferBuilder & inline flatbuffers::Offset CreateWeapon(flatbuffers::FlatBufferBuilder &_fbb, const char *name = nullptr, int16_t damage = 0) { - return CreateWeapon(_fbb, name ? 0 : _fbb.CreateString(name), damage); + return CreateWeapon(_fbb, name ? _fbb.CreateString(name) : 0, damage); } inline flatbuffers::Offset CreateWeapon(flatbuffers::FlatBufferBuilder &_fbb, const WeaponT *_o); diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index 6eaab1445..9326dd896 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -927,15 +927,16 @@ class CppGenerator : public BaseGenerator { auto &field = **it; if (!field.deprecated) { if (field.value.type.base_type == BASE_TYPE_STRING) { - code += ", " + field.name + " ? 0 : "; - code += "_fbb.CreateString(" + field.name + ")"; + code += ", " + field.name + " ? "; + code += "_fbb.CreateString(" + field.name + ") : 0"; } else if (field.value.type.base_type == BASE_TYPE_VECTOR) { - code += ", " + field.name + " ? 0 : "; + code += ", " + field.name + " ? "; code += "_fbb.CreateVector<"; code += GenTypeWire(field.value.type.VectorType(), "", false); - code += ">(*" + field.name + ")"; - } else + code += ">(*" + field.name + ") : 0"; + } else { code += ", " + field.name; + } } } code += ");\n}\n\n"; diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index 49aba1133..6353658b6 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -264,7 +264,7 @@ inline flatbuffers::Offset CreateStat(flatbuffers::FlatBufferBuilder &_fbb const char *id = nullptr, int64_t val = 0, uint16_t count = 0) { - return CreateStat(_fbb, id ? 0 : _fbb.CreateString(id), val, count); + return CreateStat(_fbb, id ? _fbb.CreateString(id) : 0, val, count); } inline flatbuffers::Offset CreateStat(flatbuffers::FlatBufferBuilder &_fbb, const StatT *_o); @@ -571,7 +571,7 @@ inline flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder float testf2 = 3.0f, float testf3 = 0.0f, const std::vector> *testarrayofstring2 = nullptr) { - return CreateMonster(_fbb, pos, mana, hp, name ? 0 : _fbb.CreateString(name), inventory ? 0 : _fbb.CreateVector(*inventory), color, test_type, test, test4 ? 0 : _fbb.CreateVector(*test4), testarrayofstring ? 0 : _fbb.CreateVector>(*testarrayofstring), testarrayoftables ? 0 : _fbb.CreateVector>(*testarrayoftables), enemy, testnestedflatbuffer ? 0 : _fbb.CreateVector(*testnestedflatbuffer), testempty, testbool, testhashs32_fnv1, testhashu32_fnv1, testhashs64_fnv1, testhashu64_fnv1, testhashs32_fnv1a, testhashu32_fnv1a, testhashs64_fnv1a, testhashu64_fnv1a, testarrayofbools ? 0 : _fbb.CreateVector(*testarrayofbools), testf, testf2, testf3, testarrayofstring2 ? 0 : _fbb.CreateVector>(*testarrayofstring2)); + return CreateMonster(_fbb, pos, mana, hp, name ? _fbb.CreateString(name) : 0, inventory ? _fbb.CreateVector(*inventory) : 0, color, test_type, test, test4 ? _fbb.CreateVector(*test4) : 0, testarrayofstring ? _fbb.CreateVector>(*testarrayofstring) : 0, testarrayoftables ? _fbb.CreateVector>(*testarrayoftables) : 0, enemy, testnestedflatbuffer ? _fbb.CreateVector(*testnestedflatbuffer) : 0, testempty, testbool, testhashs32_fnv1, testhashu32_fnv1, testhashs64_fnv1, testhashu64_fnv1, testhashs32_fnv1a, testhashu32_fnv1a, testhashs64_fnv1a, testhashu64_fnv1a, testarrayofbools ? _fbb.CreateVector(*testarrayofbools) : 0, testf, testf2, testf3, testarrayofstring2 ? _fbb.CreateVector>(*testarrayofstring2) : 0); } inline flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o);