我已經成功保存了變量,但不知道使用boost :: any的類型。但是我徘徊,是否可以使用它們而不實際將它們轉換回原始類型。這裏是可以說明問題更好的例子:我想我已經知道答案是否定的,因爲編譯將無法檢查變量的類型,但無論如何,我問也許有一個天才C++ boost :: any在不知道類型的情況下使用該值
struct callbackInfo
{
boost::any pointer_to_the_object;
boost::any pointer_to_the_function;
};
class someClass
{
template<class T, class P>
void add(T const func, P that)
{
callbackInfo tmp;
tmp.pointer_to_the_object =that;
tmp.pointer_to_the_function = func;
functions->addLast(tmp);
}
template<class ARG>
void trigger(SENDERTYPE sender, ARG arg)
{
STLinkedListIterator<callbackInfo>* it = functions->createIteator();
if(it != nullptr)
{
do
{
//This is the problem:
((*it->getData().pointer_to_the_object).*it->getData().pointer_to_the_function)(nullptr);
it->next();
}while(!it->EOL());
}
}
}
解決方案。
答案是否定的。但是,使用多態性最好解決的問題並不是你的問題(只是一個想法,因爲我對實際案例知之甚少)? –