繁体   English   中英

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

[英]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方法会生成“触发的断点”错误,但是我没有做任何断点,因此,可能是由于以某种不适当的或仅仅是语法不正确的方式使用指针引起的。

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

您是否必须使用指针? 我建议类似的东西:

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

该函数应该看起来像

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 );

等价并声明相同的一个函数。

暂无
暂无

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

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