私はboost::variant
についての質問があり、メソッドの正しい使い方をしています。例えば、私はStuff
とUser
のようなクラスを持っていると私は、関数(擬似コード)を持つ:ブーストバリアント返品タイプ
boost::variant<User*, Stuff*> HashTable::getPersonByKey(string login, string password, string list_type)
{
int index = hash(login, password);
boost::variant<User*, Stuff*> temp_u, temp_s;
if (list_type == "User")
{
if (user_array[index].getPerson(login, password))
{
temp_u = user_array[index].getPerson(login, password);
//returns User*
//maybe something like variant<User* , Stuff*> (temp_u);
return VARIANT
}
}
else if (list_type == "Stuff")
{
if (user_array[index].getPerson(login, password))
{
temp_s = stuff_array[index].getPerson(login, password);
//returns Stuff*
//maybe something like variant<User* , Stuff*> (temp_s);
return VARIANT
}
}
return boost::variant<User*, Stuff*>();
}
はどのようにリターンが可能になっていますか?
は私が
boost::variant<boost::variant<User*, Stuff*>, boost::variant<User*, Stuff*>>getPerson()
{
boost::variant<boost::variant<User*, Stuff*>, boost::variant<User*, Stuff*>> temp_user1, temp_stuff1 ,
temp_user2 , temp_stuff2;
temp_u = user_array[index].getPerson(login, password);
return variant<variant <User* , Stuff*> ,variant <User* , Stuff*>> (temp_user1);
}
は私が何とか明示的バリアントtemp_person
が所属している表示する必要があります...のようなものがさらに複雑にすることはできますか? これをオブジェクトから取り除くことは問題になりますか?
代わりに継承したくないですか? – Jarod42
boost :: variant、boost :: variant > 'では、2つの型は同じですが、variantには意味がありません。 –
Jarod42
'return user_array [index] .getPerson(ログイン、パスワード);または' return temp_u; 'が動作するはずです。 – Jarod42