是否可以將函數返回的變量或值作爲模板參數傳遞。是否可以將變量/函數返回值作爲模板參數
例子:
QVariantHash options;
options.insert("fontStyle", fontStyleObject); // QFont fontStyleObject
options.insert("fontColor", fontColorObject); // QColor fontColorObject
Q_FOREACH(const QVariant &option, options){
qDebug() << option.value<option.typeName()>();
}
正如你所看到的,我已經通過了option.typeName()
作爲模板參數和方法返回的對象QString
的類型。
我已經做到了,但有一個錯誤信息:error: C2974: 'QVariant::value': invalid template argument for 'T', type expected
。
是否有可能通過一個變量或函數作爲模板參數返回的值?如果沒有,那麼做什麼替代方法?
所有模板魔術發生在編譯時。在編譯時,所有模板實例化的所有類型都必須已知。如果'option.typeName()'在編譯時可能是已知的(例如,它是QVariantHash實例的某種依賴類型,我懷疑它),那麼你可以。否則,你不能。 – iehrlich
另外,不會'qDebug()<< option.toString()'在你的特定情況下工作嗎?我的意思是,你試圖序列化它,對吧? – iehrlich
@iehrlich:別擔心,這行'qDebug()<< option.value();'只是一個例子。 –