使用 for 循环声明对象数组 c++

发布于 2024-10-21 03:52:35 字数 402 浏览 2 评论 0原文

好的。因此,我声明了一个对象数组,并使用以下代码手动定义了它们:

Object* objects[] =
{
    new Object(/*constructor parameters*/),
    new Object(/*constructor parameters*/)
}; 

是否有使用某种循环(最好是 for 循环)来声明这些对象?类似于:

Object* objects[] =
{
    for(int i=0; i<20; /*number of objects*/ i++)
    {
        new Object(/*constructor parameters*/);
    }
}; 

但是语法正确吗?

Okay. So I have declared an array of objects, and I have manually defined them using this code:

Object* objects[] =
{
    new Object(/*constructor parameters*/),
    new Object(/*constructor parameters*/)
}; 

Is there anyway to use some kind of a loop (preferably a for loop) to declare these? Something like:

Object* objects[] =
{
    for(int i=0; i<20; /*number of objects*/ i++)
    {
        new Object(/*constructor parameters*/);
    }
}; 

But with proper syntax?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

零時差 2024-10-28 03:52:35

我强烈建议使用标准库容器而不是数组和指针:

#include <vector>

std::vector<Object> objects;

// ...

void inside_some_function()
{
    objects.reserve(20);
    for (int i = 0; i < 20; ++i)
    {
        objects.push_back(Object( /* constructor parameters */ ));
    }
}

这提供了异常安全性并减少了堆上的压力。

I strongly suggest using a standard library container instead of arrays and pointers:

#include <vector>

std::vector<Object> objects;

// ...

void inside_some_function()
{
    objects.reserve(20);
    for (int i = 0; i < 20; ++i)
    {
        objects.push_back(Object( /* constructor parameters */ ));
    }
}

This provides exception-safety and less stress on the heap.

冰雪之触 2024-10-28 03:52:35
Object* objects[20];

for(int i=0; i<20; /*number of objects*/ i++)
{
    objects[i] = new Object(/*constructor parameters*/);
}
Object* objects[20];

for(int i=0; i<20; /*number of objects*/ i++)
{
    objects[i] = new Object(/*constructor parameters*/);
}
仅一夜美梦 2024-10-28 03:52:35

C++ 中的点可以用作数组。尝试这样的事情:

// Example
#include <iostream>

using namespace std;

class Object
{
public:
    Object(){}
    Object(int t) : w00t(t){}
    void print(){ cout<< w00t << endl; }
private:
    int w00t;
};

int main()
{
    Object * objects = new Object[20];
    for(int i=0;i<20;++i)
        objects[i] = Object(i);

    objects[5].print();
    objects[7].print();

    delete [] objects;
    return 0;
}

问候,
丹尼斯·M.

Points in C++ can be used as arrays. Try something like this:

// Example
#include <iostream>

using namespace std;

class Object
{
public:
    Object(){}
    Object(int t) : w00t(t){}
    void print(){ cout<< w00t << endl; }
private:
    int w00t;
};

int main()
{
    Object * objects = new Object[20];
    for(int i=0;i<20;++i)
        objects[i] = Object(i);

    objects[5].print();
    objects[7].print();

    delete [] objects;
    return 0;
}

Regards,
Dennis M.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文