У меня возникла проблема, когда я хочу создать чистую виртуальную функцию и назначить этот множественный диапазон выходных форматов (например, 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;
}
};
, когда я раскомментировать класс DynamicArray и DynamicArrayDouble наследуют это я столкнуться с некоторой погрешностью. следует отметить, что в первый раз я пытаюсь использовать void * для второго параметра для методов Set и Get, но снова получаю некоторые ошибки, которые я не могу использовать для этого стиля кода следующим образом: ошибка: не может объявить переменную 'd1' для быть абстрактного типа 'DynamicArrayDouble'
и код выше ошибки:
class DynamicArray
{
public:
virtual void GetData(unsigned int s, void* d) = 0;
virtual void SetData(unsigned int s, void* 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;
}
};
int main()
{
DynamicArrayDouble d1(5);
double x=0;
for(unsigned int i=0;i<5;i++)
{
x = ((i+1.0)/2);
d1.SetData(i,&x);
}
for(unsigned int i=0;i<5;i++)
{
d1.GetData(i,&x);
cout << "Data " << i+1 << " is = " << x << endl;
}
return 0;
}
я пишу свои коды в CodeBlocks.
Я по достоинству оценю ваш ответ ... Спасибо.
_I лицо некоторые error_. И ошибка ...? Поскольку, как правило, ошибки указывают, что именно, что случилось, было ли трудно скопировать-вставить его? –