数据不会插入指针数组

时间:2018-01-27 13:57:23

标签: c++ arrays pointers inheritance

我有我的类 CompressionAlgorithm RLE MTF 继承了这些类。我创建了一个数组,我试图添加这些子类,但只添加了第一个类。

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";
    }
}

我在哪里犯了错误?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你需要make函数来接受指针数组而不只是一个指针:

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

并且呼唤你需要这样打电话:

p.printall(CA, (size));

答案 2 :(得分:0)

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