我如何使用方法来处理大量指针?
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;
}
}
我试图完成一些工作,但突然意识到我不知道如何正确地将指针参数发送给方法。在网上寻找同样的问题,但没有找到更好的解决方案。 我的代码是:
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;
}
}