[英]Data don't insert into an array of pointers
我有我的类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";
}
}
我在哪里出错?
将指针传递给函数时,您无需取消引用指针; 这样做只会传递第一个元素。 另外,函数签名需要接受一个指针数组,这就是您所拥有的。
您需要make函数来接受指针数组,而不仅仅是指针:
void Print::printall(CompressionAlgorithm *ca[], int size)
打电话时,您需要像这样打电话:
p.printall(CA, (size));
而不是仅在printall()中调用* ca,因为仅在不循环时调用* ca才访问数组的第一个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.