我想用Python的方式在C++ 11元組中實現一個簡單的樹。在Python中,我們可以使用type(obj)來檢查運行時對象類型,並將具有不同類型的對象傳遞給一個函數,我已經爲calc()編寫了僞代碼,如何在C++中執行它?我嘗試打印typeid(child1).name()和typeid(tree).name(),他們是'St5tupleIIciiEE'和'St5tupleIIcS_IIciiEES0_EE'。C++中的樹11 RTTI的元組
我的環境是g ++ 4.8.1。謝謝!
// pseudo code
int calc(tuple tree) {
symbol = type(get<0>(tree));
l_child = type(get<1>(tree));
r_child = type(get<2>(tree));
l = (type(l_child) == tuple) ? calc(l_child) : l_child;
r = (type(r_child) == tuple) ? calc(r_child) : r_child;
return l symbol r;
}
int main()
{
auto l_child = make_tuple('*', 1, 2);
auto r_child = make_tuple('-', 5, 1);
auto tree = make_tuple('+', l_child, r_child);
cout << calc(tree) << endl;
}