Вывод нескольких типов в полиморфизме

У меня проблема, когда я хочу создать чисто виртуальную функцию и назначить этому множеству выходных форматов (например, int, double и char).

я написал код ниже, и он работает только тогда, когда я исключаю свой абстрактный класс, который мне не нужен.

мой код:

enter code here
    //class DynamicArray
//{
//    public:
//        virtual void GetData(unsigned int s, int& d) = 0;
//        virtual void SetData(unsigned int s, int& d) = 0;
//};class DynamicArrayDouble//: public DynamicArray
{
private:
unsigned int m_Length;
double* arr;
public:
DynamicArrayDouble(unsigned int l)
{
m_Length = l;
arr = new double[m_Length];
}
void SetParam(unsigned int l)
{
m_Length = l;
arr = new double[m_Length];
}
void GetData(unsigned int s, double& d)
{
d = arr[s];
}
void SetData(unsigned int s, double& d)
{
arr[s] = d;
}
};

-2

Решение

Вы не можете просто переопределить

void func(some_pointer_type ptr);

с

void func(some_other_pointer_type ptr);

и то же самое касается ссылок. Они фактически считаются совершенно не связанными, если они не совпадают.

DynamicArrayDouble — это имя говорит мне, что вы должны смотреть на шаблоны и не писать один и тот же код для всех типов, которые вам нужны. Вот как работает STL. Вы полностью избежите полиморфизма во время выполнения.

Для начинающих:

template <typename T>
DynamicArray;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]