syxme
@syxme

Класс наследуемый от generic класса как передать через параметр функции?

Есть класс generic типа:
template<class T = ViewHolder>
class Adapter {
public:
    virtual T *onCreateViewHolder(ViewGroup *parent, int viewType) = 0;
    virtual void onBindViewHolder(T *holder, int position) = 0;
    T *createViewHolder(ViewGroup *parent, int viewType) {
        return onCreateViewHolder(parent, viewType);
    }
    void bindViewHolder(T *holder, int position) {
        onBindViewHolder(holder, position);
    }
    virtual int getItemViewType(int position) { return 0; }
    virtual int getItemCount() = 0;
    virtual void onViewRecycled(T *holder) {};
}


Дочерний класс класс:
class MainHolder:public ViewHolder{
    public:
        MainHolder(View* itemView):ViewHolder(itemView){
            pool_id = (TextView*)itemView->findById("pool_id");
        }
};


class TestAdapter:public Adapter<MainHolder> 
{
    
    public:

        TestAdapter(Context* ctx);

        MainHolder* onCreateViewHolder(ViewGroup* parent, int viewType) override;
        int getItemCount() override;
        void onBindViewHolder(MainHolder* holder, int position) override;
        ~TestAdapter();
};


Хочется этот класс передать как в java, например
Adapter *mAdapter = nullptr;
void setAdapter(Adapter *adapter){
 mAdapter = adapter;
 mAdapter->getItemCount()
}

Но получается только вот так:
Adapter<ViewHolder> *mAdapter = nullptr;
void setAdapter(Adapter<ViewHolder> *adapter){
//....
}
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы