我有我的类 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";
}
}
我在哪里犯了错误?
答案 0 :(得分:0)
将指针传递给函数时,不需要取消引用指针;这样做只传递第一个元素。此外,函数签名需要接受一个指针数组,这就是你所拥有的。
答案 1 :(得分:0)
你需要make函数来接受指针数组而不只是一个指针:
void Print::printall(CompressionAlgorithm *ca[], int size)
并且呼唤你需要这样打电话:
p.printall(CA, (size));
答案 2 :(得分:0)
而不是在printall()调用中调用* ca而不是调用* ca只在不在循环中时访问数组的第一个元素。