从包括对象向量在内的多个来源构造对象

问题描述 投票:0回答:1

我从c ++中的两个不同来源即时获得[可能属于一类的不同字段]。首先,类A的字段在函数#1(getData_Main)中传递,然后在另一个局部函数#2(getVecor_Sublass)中传递字段矢量;函数调用始终是顺序的#1,然后是#2。这是简化的数据结构;

class Subclass {
    string str;
    string str2;
    //a few other fields 
};

class Main {
    string name;
    float somevar;
    // few more string fields
    vector<Subclass> vecSubclass; 
};

我需要保存数据状态,以使其持久化,以便在其他接口中使用,类似于构造vector<Main*>对象向量。我考虑过要创建一个变量作为主类的索引,并在子类中使用相同的索引并形成某种查找表?但是,如何以最好的可能和更有效的方式做到这一点呢?

[不幸的是,我对现代C ++(11/14)功能和构造不太熟悉,仍然是c ++ 03开发人员),因此考虑在此处发布以获取一些建议,以防在使用lambda或任何其他代码时出现一些有用的代码段较新的功能?

class Main 
{
    int index; //create from some static variable in function A and pass on to function B 
    string name;
    float somevar;
    vector<A> vecA;
};

更新(回答评论)

输入是数据字段,来自java / jni本机函数;

所需的输出是vector<Main>个对象。

问题#1是一个Java类的输入字段,它具有两个本机函数,因此C ++获得了两组字段(Set#1是Main类的所有字段,而set#2是 vector<Subclass>包含在Main类字段中;)。

我只是试图重建对象并尝试其他选项。

当它们进入局部函数中时,除非我们创建类似于用作索引的索引并从这两个来源在C ++中构建矢量对象之类的东西,否则重建vector

对象并不常见。问题2是如何以最佳方式做到这一点。

我希望这个问题现在有意义吗?

编辑以添加以下我们试图模仿其功能的Java代码:

public class MainLine {
    String name;
    String Locator;
    Sub[] SubList = new Sub[5];
}
public class Test {
   MainLine[] MainLineArray = new MainLine[10000];
    // Data coming from some other sources in Java
   for (int j=0;j<10000;j++){
       test.addMainLine(MainLineArray[j].Locator, MainLineArray[j].name);
       for (int k=0;k<5;k++) {
        test.addSubList(MainLineArray[j].SubList[k].field1, MainLineArray[j].SubList[k].field2, MainLineArray[j].subList[k].field3,.....);
    }
  }
}

我从c ++中的两个不同来源即时获得[可能属于一类的不同字段]。首先,类A的字段在函数#1(getData_Main)中传递,然后在...

c++ c++11 c++14 factory lookup
1个回答
0
投票

我想您正在问如何制作一个对象,该对象的字段由在某些函数的多个单独调用中获得的数据组成。通常,要处理这些类型的情况,您需要将标识符或其他内容传递给对象构建函数,以找出哪些值属于哪个对象。

© www.soinside.com 2019 - 2024. All rights reserved.