C++ 具有复杂嵌套类的进程间

C++ 具有复杂嵌套类的进程间,c++,boost-interprocess,C++,Boost Interprocess,我想我终于掌握了boost:interprocess库的基本知识,并且在处理包含几个成员变量的相对简单的类(这些变量都是标准数据类型)时成功地使用了它 然而,我现在面临的问题是将一个相当复杂的类推出到进程间共享内存中,我一点运气都没有。我希望这里有人能帮助我(或者引导我找到另一种解决方案)。我希望这些都是最基本的,我有以下几点: // these first two classes are from the Gnu Scientific Library, so I can't // (or

我想我终于掌握了boost:interprocess库的基本知识,并且在处理包含几个成员变量的相对简单的类(这些变量都是标准数据类型)时成功地使用了它

然而,我现在面临的问题是将一个相当复杂的类推出到进程间共享内存中,我一点运气都没有。我希望这里有人能帮助我(或者引导我找到另一种解决方案)。我希望这些都是最基本的,我有以下几点:

// these first two classes are from the Gnu Scientific Library, so I can't  
// (or won't) be able to mess with the definition of these structures.  
typedef struct   
{  
    size_t size1;  
    size_t size2;  
    size_t tda;  
    double * data;  
    gsl_block * block;  
    int owner;  
} gsl_matrix;  

typedef struct   
{
    size_t size1;
    size_t size2;
    size_t tda;
    int * data;
    gsl_block_int * block;
    int owner;
} gsl_matrix_int;

class MyNumbersClass
{
    gsl_matrix_int* m_pIntMatrix;
    gsl_matrix*     m_pDblMatrix;
    unsigned int iVal1;
    unsigned int iVal2;
}

class MyOtherDataClass
{
    std::vector<int> m_vInputs;
    std::vector<double> m_vOutputs;
    std::string m_sTitle;
    bool m_bCorrect;
}

class SharedClass
{
    MyNumbersClass* m_pFirstNumbers;
    std::vector<double> m_vDblData;
    std::vector<MyOtherDataClass> m_vOtherData;
}
//前两个类来自Gnu科学图书馆,所以我不能
//(或不会)能够搞乱这些结构的定义。
类型定义结构
{  
尺寸1;
尺寸2;
尺寸(tda);
双*数据;
gsl_块*块;
业主;
}gsl_矩阵;
类型定义结构
{
尺寸1;
尺寸2;
尺寸(tda);
int*数据;
gsl_块_int*块;
业主;
}gsl_矩阵_int;
类别MyNumberClass
{
gsl_矩阵_int*m_pint矩阵;
gsl_矩阵*m_PDBL矩阵;
无符号整数1;
无符号整数2;
}
类MyOtherDataClass
{
std::向量m_输入;
std::向量m_vOutputs;
标准:字符串m_针;
正确无误;
}
类共享类
{
MyNumbersClass*m_pFirstNumber;
std::矢量m_vDblData;
std::向量m_vOtherData;
}
我需要做的是在进程间内存空间中创建SharedClass对象的向量,以便多个进程可以访问数据。不管我怎么努力,我似乎都找不到解决办法。似乎应该有一种比使每个成员变量都成为进程间版本(进程间::向量、进程间::字符串、偏移量_ptr等)更简单的方法,但可能不是。即使这样,我也不知道如何处理所有的分配器,更不用说GSL库结构了


救命啊

您的问题在于STL容器。正如您所猜测的,您需要使用boost::进程间容器

有关使用字符串的示例,请参见。 有关矢量,请参见


干杯

您的问题在于STL容器。正如您所猜测的,您需要使用boost::进程间容器

有关使用字符串的示例,请参见。 有关矢量,请参见

干杯