1
我正在努力與可變模板的多繼承。可變模板和多繼承
這是我到目前爲止的代碼:
template <typename U>
class id_map {
public:
std::vector<U> vec_;
};
現在我想初始化另一個類,從id_map繼承了多次,這樣的事情:
template<typename ... T>
class constant_allkey_map : public id_map<T> ... {
private:
public:
template <typename U>
void push_back(U i) {
id_map<U>::vec_.push_back(i);
}
};
這工作,我可以訪問它只是很好:
constant_allkey_map<int, long> cakm;
cakm.push_back<int>(1);
當我嘗試這樣的事情時失敗:
constant_allkey_map<int, int> cakm;
錯誤
"duplicate base type id_map<int> invalid".
我做了一些閱讀,似乎我應該id_map模板與id參數擴展:
template <size_t i_, typename U>
class id_map ...
,但我不知道如何通過該身份證中的繼承部分:
template<typename ... T>
class constant_allkey_map : public id_map<T> ... {
可以meone請幫助我?如果我完全錯了,請指出我的方向是正確的?
你期待'cakm.push_back(1);'當'cakm是'constant_allkey_map''時要做什麼? –
Casey
我會很高興與cakm.push_back <0>(1); cakm.push_back <1>(1);就像tupple被使用,但不知道如何實現......基本上這是我的問題 – Paladin