1
派生類我有一系列的實地驗證每一個看起來像下面的:存儲模板集裝箱
template <typename T>
class NameValidator : public Validator<T> {
...
bool validate(const T& msg) const override { ... }
...
};
每個驗證器必須能夠驗證不同的消息類型,因此模板參數T
。
我想創建一個管理員類,作爲這些驗證器中的每一個的公共網關。類似如下:
class ValidatorManger {
...
// Calls validate() functions for each field.
template <typename T>
bool validate(const T& msg) { ... }
...
};
因此,我將需要每個驗證器類(例如:NameValidator<T>
)的存儲在某些類型的數據結構,然後內ValidatorManager::validate()
遍歷它們。
有沒有辦法做到這一點,以便我不必爲每種消息類型明確地專門化模板?我正在成像如下內容
validator_map.insert(std::make_pair("Name", NameValidator<T>));
validator_map.insert(std::make_pair("Age", AgeValidator<T>());
...
雖然這顯然是亂碼。
問題:
- 有沒有人用這種模式之前,並有實現這一目標的解決方案?
- 我應該重新考慮這個設計嗎?
很可能有一個數組和遍歷這一點。 – chris
爲什麼特殊的驗證器例如NameValidator是一個模板?它不應該來自Validator或它應該驗證的任何類型嗎? –
ZivS
@chris - 你能澄清你的意思嗎? – Ryan