2016-03-04 42 views
0

我一直在試圖讓我自己的向量庫是在QT一元類型,通過輔導他們教我Q_DECLARE_METATYPE(class)。然而我的課是一個模板。我一直在四處搜索,發現一個沒有記錄的宏Q_DECLARE_METATYPE_TEMPLATE_1ARG(),但是我發現了一個關於它的錯誤報告,並且沒有反饋它是否是固定的。我嘗試過使用它,但它仍然沒有註冊。究其原因,我Shader類我的遊戲引擎,我存儲制服並根據統一的,它存儲的值作爲QVariant。那是我遇到問題的地方。有誰知道如何註冊QMetatypes模板?聲明模板類一元類型的QT

回答

2

Qt使用你在內部提宏,也有2參數版本。 QtCore/qmetatype.h顯示了一些使用示例。我不確定它爲什麼不能像你期望的那樣工作,我需要看你的代碼來弄清楚更多。

但是,這可能是你接受的解決辦法:如果你知道你將需要可能的模板參數,就可以明確地聲明每個模板實例是一個元類型。例如,如果你的模板類被稱爲Foo<T>,你知道你將只使用Foo<int>Foo<float>,你可以註冊這些:

Q_DECLARE_METATYPE(Foo<int>) 
Q_DECLARE_METATYPE(Foo<float>)