数据不会插入到指针数组中

Data don't insert into an array of pointers

本文关键字:指针 数组 插入 数据      更新时间:2023-10-16

我有我的类CompressionAlgorithm,RLEMTF类继承自该类。我创建了一个数组,我正在尝试添加这些子类,但只添加了第一个类。

int const size = 2;
CompressionAlgorithm * CA[size];
CA[0] = new RLE();
CA[1] = new MTF();

RLE 和 MTF 都已初始化,但是当我尝试使用 printall 方法打印它们的名称时,MTF 不会在控制台上打印任何信息,或者我收到一条错误消息,说 std::bad_alloc。

Print p;
p.printall(*CA, (size));
void Print::printall(CompressionAlgorithm *ca, int size)
{
    for (int i = 0; i < size; i++)
    {
       cout << i+1 << " for ";
       cout << ca[i].GetName();
       cout << "n";
    }
}

我哪里犯了错误?

你需要 make 函数来接受指针数组,而不仅仅是指针:

void Print::printall(CompressionAlgorithm *ca[], int size)

呼唤你需要这样打电话:

p.printall(CA, (size));

将指针传递给函数时,不需要取消引用指针;这样做只会传递第一个元素。此外,函数签名需要接受一个指针数组,这就是你所拥有的。

而不是在printall((中调用*ca,只调用ca,因为调用*ca仅在不在循环中时访问数组的第一个元素。