C :创建类对象的向量

C++: Creating a vector of class objects

本文关键字:向量 对象 创建      更新时间:2023-10-16

我有一个关于创建类对象向量的特定问题。最近从Java过渡后,我仍然对这个话题有雾。

假设我有class Foo {...}

Foo::Foo (string test) {
    string str = test;
}

我想创建一个类别foo的不同对象的向量。这是可能的,如果是这样,什么是一种简单的方法?(在C 中)

我在想这样的事情:

vector<Foo> list;
for (int i = 1;i<10;i++) {
    Foo temp("test")
    list.push_back(temp);
}

,但问题是我要创建类的不同的实例,而没有将它们引用相同的对象。

任何帮助将不胜感激。谢谢!

编辑:感谢您的帮助和友好评论。我意识到明显的解决方案(你们提出的一个解决方案)在我的程序中没有起作用,因为我没有切换到新版本的C 。解决了这个问题。

您正在寻找所谓的vectorvector类似于Array,但可以在运行时间更改其大小。

std::vector<Foo> v { Foo("A"),Foo("B"),Foo("C") };

然后,您可以通过执行v[0]访问对象。如果您想在初始化后将另一个对象添加到vector,则进行v.push_back(Foo("D"))

我认为可以通过简单地将STL矢量用于您的课程来解决问题。请参阅此代码:

#include <iostream>
#include <vector>
using namespace std;
class Rectangle{
    int length;
    int width;
    public: 
        Rectangle(int length, int width){
            this->length = length;
            this->width = width;    
        }

        int area(){
            return this->width * this->length;
        }
};
int main() {
    vector<Rectangle> v;
    v.push_back(Rectangle(1,2));
    v.push_back(Rectangle(3,4));
    cout << v[0].area()<<endl;
    cout << v[1].area()<<endl;
    // your code goes here
    return 0;
}

使用stl vector库来实现这一目标。

std::vector<Foo> vectorOfObjects;
Foo newObject("A");
vectorOfObjects.push_back(newObject)
vectorOfObjects[0].doSomething();