繁体   English   中英

数据不插入指针数组

[英]Data don't insert into an array of pointers

我有我的类CompressionAlgorithmRLEMTF类从中继承。 我做了一个数组,尝试向其中添加这些子类,但仅添加了第一类。

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才访问数组的第一个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM