Я хотел бы расширить базовый класс, который имеет виртуальную функцию, которая принимает указатель на массив типа.Производный класс является более сложным и может использовать преимущества нескольких указателей для массива этого типа.
derived
и other
показывают разные решения для решения этой проблемы, но мне не нравятся оба из них.Могу ли я что-нибудь сделать вместо этого?
struct base {
virtual void set(int* p, std::size_t n) { }
};
struct derived : base
{
virtual void set(int* p, std::size_t n)
{
int** pp = new int*[1]; // must be deleted before destruction
pp[0] = p;
set(1, pp, n);
}
void set(std::size_t count, int* const* pp, std::size_t n)
{
}
};
struct other : base
{
virtual void set(int* p, std::size_t n)
{
m_helper[0] = p;
set(1, m_helper, n);
}
void set(std::size_t count, int* const* pp, std::size_t n)
{
}
private:
int* m_helper[1];
};