我如何使用方法来处理大量指针?

How could i use methods to work with pointers massive?

我试图完成一些工作,但突然意识到我不知道如何正确地将指针参数发送给方法。在网上寻找同样的问题,但没有找到更好的解决方案。 我的代码是:

    TextBook *lib[50];

lib[0]=new TextBook(arg1, arg2, arg3);
lib[1]=new TextBook(arg1, arg2, arg3);

我的职能是:

void libPrint(Textbook *lib){
    cout<<lib[0]->getArg1();
    cout<<lib[0]->getArg2();
    // etc..
}

但是 libPrint 方法会产生 "triggered break point" 错误,但我没有设置任何断点,所以这可能是由于使用指针不当或只是语法不正确造成的。

所以我的回答是:如何重写 libPrint 方法使其正常工作?

函数应该如下所示

void libPrint(Textbook **lib){
    cout<<lib[0]->getArg1();
    cout<<lib[0]->getArg2();
    // etc..
}

也就是说,如果你有一个像

这样的数组
T lib[50];

其中 T 是某种类型,然后当它按值传递给函数时,数组名称将转换为指向其第一个元素的指针

void libPrint( T *lib );

此处函数参数 lib 的类型为 T *

现在只需将 T 替换为数组元素的类型

TextBook * lib[50];

T 等于 TextBook *。因此,指向数组第一个元素的指针的类型为 Textbook **.

这三个函数声明

void libPrint(Textbook * lib[50] );
void libPrint(Textbook * lib[] );
void libPrint(Textbook **lib );

是等价的并且声明相同的函数。

你必须使用指针吗?我会推荐类似的东西:

// Declare your vector
std::vector<TextBook> lib;

// Add TextBooks
lib.emplace_back(arg1, arg2, arg3);
lib.emplace_back(arg1, arg2, arg3);

以及您的打印功能

void libPrint(std::vector<TextBook> const& lib)
{
    // Loop over each book and print arguments
    for (auto const& book : lib)
    {
        cout << book.getArg1() << endl;
        cout << book.getArg2() << endl;
        cout << book.getArg3() << endl;
    }
}