Как создать производный класс с "производным входным классом"? - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть базовый класс

    class BaseClass
    {
    public:
        BaseClass(const <std::shared_ptr<inputClassForBase>>& input)
    }

Я хотел бы создать производный класс так, чтобы вводимые им данные были получены из inputClassForBase, например:

    class DerivedClass : public BaseClass
    {
    public:
        DerivedClass(const <std::shared_ptr<inputClassForDerived>>& input)
        :
        BaseClass(input)
    }

    class inputClassForDerived: public inputClassForBase
    {}

Как это сделать быть сделано? Я знаю, что в C# есть дженерики, но в C ++ гораздо сложнее установить ограничения для члена / аргумента класса. Я попытался пойти по пути превращения BaseClass в шаблонный класс, но затем мне кажется, что я могу использовать его как шаблон ИЛИ базовый класс, но не оба. Любое предложение?

1 Ответ

2 голосов
/ 07 февраля 2020

Фрагменты кода, размещенные в вопросе, страдают от многочисленных синтаксических ошибок и запутанного порядка определений классов. После исправления код компилируется просто отлично и не требует никаких шаблонов c:

#include <memory>

class inputClassForBase
{
};

class inputClassForDerived : public inputClassForBase
{
};

class BaseClass
{
public:
    BaseClass(const std::shared_ptr<inputClassForBase>& input);
};


class DerivedClass : public BaseClass
{
public:
    DerivedClass(const std::shared_ptr<inputClassForDerived>& input)
     : BaseClass(input)
    {
    }
};
...