我有幾個小的類,它們都是在同一個文件中聲明和定義的所有對等的對等方。許多這些類共享信息。目前,共享信息的類型是硬編碼的,用於初始開發和測試目的,但我想模板化(動詞形式?)類。但是,如果我在每個類之前編寫template
構造,則可能會導致用戶可能創建具有不同類型參數的每個類的實例,這很可能會導致數據或代碼中的錯誤。有沒有辦法強制使用相同類型創建所有類實例?在多個模板上執行相同的類型
我能想到這樣做的唯一方法是與成員的功能,如createInstanceOfA()
,createInstanceOfB()
等,用戶必須先創建spawner
類的實例與期望創建一個額外的init
或spawner
類鍵入,然後使用其成員函數創建其他類的實例。當然,這意味着我的spawner
類將不得不與我擁有的任何實用類保持同步(這應該不是問題)。但是,有沒有更好的方法來做到這一點?
編輯:舉個例子,我的「醜陋的解決方案」(一個簡單的例子):
template <typename T>
struct A {
void manipulate(T arg);
};
template <typename T>
struct B {
void manipulate(T arg);
};
template <typename T>
struct C {
void manipulate(T arg);
};
template <typename T>
struct Spawner {
A<T> createInstanceOfA(void);
B<T> createInstanceOfB(void);
C<T> createInstanceOfC(void);
};
int main() {
// don't allow
A<int> a;
B<float> b;
C<double> c;
// allow
Spawner<int> s;
A<int> s.createInstanceOfA(); // not sure if syntax is correct
B<int> s.createInstanceOfB();
C<int> s.createInstanceOfC();
return 0;
}
爲什麼你想要模板,如果代碼不通用?這種設計聽起來很難看。 –
如果這是一個錯誤,以臨時文件爲什麼模板它 – rerun
@CatPlusPlus和重新運行:允許共享數據是任何類型,只要它是所有相同的類型。我同意我的「解決方案」聽起來很難看。我希望有人有一個更好的主意。 – LowTechGeek