gpt4 book ai didi

c++ - 创建实例化类的数组 - 语法

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:01 26 4
gpt4 key购买 nike

我有这个功能

# include "Rectangle.hh"
# include "Circle.hh"

void inst_obj (int symbols) {

for (int i=0; i<symbols ; i++) {
if (i<10) {
Rectangle symb(1,2,3);
//Store symb in an array, like symb_array[i] = symb;
}
else {
Circle symb(1,2,3,4);
//Store symb in an array, like symb_array[i] = symb;
}

}// inst_obj

那我还有一个功能:

  void check_symbols(symbols) {

for (int i=0; i<symbols; i++) {
// Check symbol objects, like symb_array[i].return_something
}
} // check_symbols

如何以简单的方式存储指向不同对象的指针? (然后您如何访问它们)?

最佳答案

您可以从 inst_obj 返回指向基础对象的指针 vector ,并将其传递给 check_symbols() 函数。像这样:

// assume Shape is base type of Rectangle and Circle

std::vector<std::unique_ptr<Shape>> inst_obj (int symbols)
{
std::vector<std::shared_ptr<Shape>> v;

for (int i=0; i<symbols ; i++)
{
if (i<10)
{
v.push_back(std::unique_ptr<Shape>(new Rectangle (1,2,3)));
}
else
{
v.push_back(std::unique_ptr<Shape>(new Circle (1,2,3,4)));
}
return v;
}

void check_symbols(std::vector<std::unique_ptr<Shape>>& v)
{
for(auto it = v.begin(), it != v.end(); ++it)
{
// Check symbol objects, like symb_array[i].return_something
}
}

用法:

std::vector<std::unique_ptr<Shape>> v = inst_obj(43);
check_symbols(v);

关于c++ - 创建实例化类的数组 - 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19315931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com