我有以下設置:模板的問題:能否編譯器推斷模板類型靜態方法
一個模板類SpecialModel:
template<typename A, typename B>
class SpecialModel<A, B> {
};
用模板的工人,從事某種型號:
template<typename M>
class Worker<M> {
Worker(M& model);
void work();
};
和工人對SpecialModel專業化:
template<typename A, typename B>
class Worker<SpecialModel<A, B> > {
Worker(SpecialModel& model);
void work();
};
最後,還有就是HANDELS 一個給定的工作人員通過一個靜態方法的類, 基本上這Manager類也很多 管理的事情,允許在實際工作中工人 重點:
template<typename W>
class Manager<W> {
Manager() {};
static void getThingsDone(W worker) {
...;
worker.work();
...;
};
};
要' getThingsDone」的SpecialModel,我需要在以下代碼 :
SpecialModel<A1, B1> spmo;
Worker< SpecialModel<A1, B1> > w(spmo);
Manager<Worker< SpecialModel<A1, B1> > >::getThingsDone(w);
的最後一行是一個我有問題。是不是 有沒有辦法,只是說:
Manager::getThingsDone(w);
無法編譯器從ω推斷W的類型?
爲什麼我要那個,反正呢?我有一系列的工作人員, 在不同種類的SpecialModels(不同的As和 Bs)上工作。現在我想循環這個數組,每個worker都調用Manager :: getThingsDone(w) 。當只有工人數組時,我應該如何將類型信息 傳遞給Manager? (SpecialModles的數組在編譯時已知(此代碼的部分 是自動生成的,然後編譯爲此類特殊輸入的 類型),該數組將在代碼的頂級位置處定義在某處 ,但代碼正在執行工作 應儘可能通用。但是,我會很樂意 找到一個答案,而不考慮這最後一點)。
恩,那個'Train'的東西進入了,你爲什麼要介紹'經理'去? – sbi 2009-11-23 10:08:02
雖然你真的只想問爲什麼編譯器無法推導出模板參數,但你的問題很長。請參閱下面的答案。 – Sebastian 2009-11-23 10:11:03
呃,*腮紅*,固定它(該死的複製和粘貼)。 – osdf 2009-11-23 10:12:34