У меня проблема, когда я хочу создать чисто виртуальную функцию и назначить этому множеству выходных форматов (например, 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;
}
};
Вы не можете просто переопределить
void func(some_pointer_type ptr);
с
void func(some_other_pointer_type ptr);
и то же самое касается ссылок. Они фактически считаются совершенно не связанными, если они не совпадают.
DynamicArrayDouble
— это имя говорит мне, что вы должны смотреть на шаблоны и не писать один и тот же код для всех типов, которые вам нужны. Вот как работает STL. Вы полностью избежите полиморфизма во время выполнения.
Для начинающих:
template <typename T>
DynamicArray;
Других решений пока нет …