2016-09-26 68 views
1

我想在C++中使用模板類,其中一個模板參數由用戶輸入在運行時確定。我敢肯定有一個簡單而漂亮的方式做到這一點,但我很新的C++和我仍然多態性與模板類掙扎......模板類的C++中的多態性

這是我希望做什麼:

if (argument==0) 
     typedef Class1 ActualClassUsed; 
if (argument==1) 
     typedef Class2 ActualClassUsed; 

MyTemplatedClass<ActualClassUsed> * object= MyTemplatedClass<ActualClassUsed>::New(); 

顯然在上面的例子ActualClassUsed沒有在合適的範圍內定義...任何簡單的方法來糾正這種情況?

感謝您的幫助!

+10

_」其中一個模板參數由運行時用戶輸入確定。「_這是不可能的。模板在編譯時被實例化。 –

+2

工廠模式和普通父類(普通接口) – KIIV

+1

@skypjack但是試圖說明如何做到這一點是完全錯誤的。您事先需要模板實例,並選擇在運行時應使用哪個模板實例來創建對象實例。上面評論中提到的工廠模式可能是正確的選擇。 –

回答

0

模板實際上是複製相同的代碼與相應的數據(所需的數據類型而不是所有的)types.That實際上發生在編譯時。當不同的數據類型的以相同的方式

(無論是用戶定義的或內置的數據類型)工藝

模板是有用目前是不可能的實例在運行時的模板。

0

我想在C++中使用模板類,其中一個模板參數由用戶輸入在運行時確定。我很確定有一個簡單而好的方法來做到這一點

不是沒有。 這實際上根本上不可能通過設計。

模板是一個開發工具生成代碼編譯程序,它是由任何用戶運行其希望發生前的那一刻,時間旅行一邊是相當困難之前有人給它使用的信息您。

根據未來駕駛員將要使用它的日期,您無法爲您在工廠生產的汽車確定固定的顏色。如果你想要這樣的東西,它必須是一個動態的變色龍,像顏色一樣根據一天的變化而變化。 「