【问题标题】:Automatic Creation of Objects in C++ [closed]在 C++ 中自动创建对象 [关闭]
【发布时间】:2019-12-24 15:35:11
【问题描述】:

我正在尝试编写一个函数,该函数可以使用动态分配创建某个类的大量对象。

假设我有一个类ExampleClass,我可以创建一个名为“A1”的对象object1,如下所示:

#include <iostream>


using namespace std;

class ExampleClass{
public:
    string name;
    ExampleClass(string aName){
        this->name = aName;
    }
};



int main() {
    ExampleClass* object1 = new ExampleClass("A1");
    cout<<"I am "<< object1->name <<"."<< endl;
    return 0;
}

我如何编写一个函数,该函数接受N、一些所需的对象,并自动创建ExampleClass 类的N 对象?

所以函数看起来应该是这样的:

void createObjects(int N){
    //Creating N objects of the class Example Class
    for(int i=0;i<=N;i++){
        ExampleClass* a_new_object_for_each_i = new ExampleClass("a_new_name_for_each_i");
    }
}

如果N=1,000,这个函数应该能够创建类似对象的东西:object1,object2,...,object1000,名称分别为“A1”、“A2”、...、“A1000”。

请注意,对象的名称和字符串名称不能作为函数的参数提供。

有人对如何做到这一点有任何想法吗?

【问题讨论】:

  • 只需使用 std::vector&lt;ExampleClass&gt; 并从您的函数中返回。
  • @πάνταῥεῖ 谢谢,但这并不能解决自动为对象和字符串名称分配名称的问题。
  • @Kivis 您可以使用字符串连接轻松生成名称,您的问题是什么?
  • @πάνταῥεῖ 我知道如何使用字符串,但不知道如何创建将在我的玩具示例中放入 object1 位置的任何内容。它不是一个字符串。

标签: c++ function class oop object


【解决方案1】:

像这样简单地使用std::vector&lt;ExampleClass&gt; 怎么样:

std::vector<ExampleClass> createObjects(int N){
    std::vector<ExampleClass> result;
    //Creating N objects of the class Example Class
    for(int i=0;i<=N;i++){
        result.push_back(ExampleClass("A" + std::to_string(i)));
    }
    return result;
}

【讨论】:

  • 这可行,但是,它不使用“新”所需的动态分配。
  • @Kivis "但是,它不使用'new'所需的动态分配" 确实,std::vector 在内部执行此操作,您不必搞砸了。
猜你喜欢
  • 2013-11-10
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2013-02-09
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多