我有一個關於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
在'升壓::變體<提高::變體<用戶*,*東西>,升壓::變體<用戶*,東西* >>',這2種類型是相同的,它不爲'variant'意義。 – Jarod42
'返回user_array [指數] .getPerson(登錄,密碼);'或'返回temp_u;'應該工作。 – Jarod42