我希望能夠根據使用情況聲明一個類的類型。例如,採用3級管道,其中有3個隊列將它們連接在一起。我想確保我將各個階段與隊列連接在一起(例如:隊列朝着正確的方向,到正確的單位等等)。使用模板在C++中指定一個類型?
這是一個極其簡化的例子,試圖完成:
template<class in, class out>
class Fifo: public queue{};
class Stage1; class Stage2; class Stage3;
class Stage1{
Fifo<Stage1,Stage2>* m_fifoOut;
};
class Stage2{
Fifo<Stage1,Stage2>* m_fifoIn;
Fifo<Stage2,Stage3>* m_fifoOut;
};
class Stage3{
Fifo<Stage2,Stage3>* m_fifoIn;
};
是否有更合適的方式來實現這個功能?在編譯時最好知道隊列被錯誤地設置了。但是,我擔心使用模板會生成不必要的類副本。
我不認爲'不必要的副本'在這裏真的是一個問題。相反,我會更擔心使用模板完成此操作的維護成本。這意味着如果你需要根據運行時信息構建一個管道,你將被迫做部分重寫。您可以編寫單獨的工具在執行配置之前檢查配置(例如,通過從文件讀取管道配置,而不使用模板執行排序)。 – phooji