c++;从函数返回自定义类 自从我用C++工作了一段时间,我试图写一个短函数来处理一个向量,它是从一个字符串{{(0,0);(1,0);(0,1);(1,1)}”进入一个自定义类。p>

c++;从函数返回自定义类 自从我用C++工作了一段时间,我试图写一个短函数来处理一个向量,它是从一个字符串{{(0,0);(1,0);(0,1);(1,1)}”进入一个自定义类。p>,c++,arrays,class,vector,return,C++,Arrays,Class,Vector,Return,但是,我很难成功地从自定义类中的字符串中从函数返回值 请在下面查找相关代码: class TwoDMap { private: int dim, num_verts; std::vector<float> int_array; public: TwoDMap (int num_vertices, int dimension); float getData(int num_vert, int dim); void addData(float va

但是,我很难成功地从自定义类中的字符串中从函数返回值

请在下面查找相关代码:

class TwoDMap
{
private:
    int dim, num_verts;
    std::vector<float> int_array;
public:
    TwoDMap (int num_vertices, int dimension);
    float getData(int num_vert, int dim);
    void addData(float value);
};

TwoDMap::TwoDMap(int num_vertices, int dimension)
{
    num_verts = num_vertices;
    dim = dimension;
    int_array.reserve(num_vertices * dimension);
}

float TwoDMap::getData(int num_vert, int dimension)
{
    return int_array[(num_vert * dim) + dimension];
}

void TwoDMap::addData(float value)
{
    int_array.push_back(value);
}

void processStringVertex(TwoDMap return_vector, int vert_index, int dimension, std::string input_vertex)
{
    //Process a single portion of the string and call the addData method
    //to add individual floats to the map
}

TwoDMap processStringVector(int dimension, int num_vertices, std::string input_vector)
{
    TwoDMap array2D (num_vertices, dimension);

    //Process the whole string, calling the processStringVertex method
    //and passing in the variable array2D

    return array2D;
}

int main()
{
    std::string v = "{(0.00, 0.00); (1.00, 0.00); (0.00, 1.00); (1.00, 1.00)}";
    int dim = 2;
    int num_verts = 4;
    TwoDMap vect = processStringVector (dim, num_verts, v);

    for( int i = 0; i < num_verts; i = i + 1)
    {
        for( int j = 0; j < dim; j = j + 1)
        {
            std::cout << vect.getData(i, j) << std::endl;
        }
    }
}
classtwodmap
{
私人:
int dim,num_verts;
向量整数数组;
公众:
TwoDMap(整数个顶点,整数维);
float getData(int num_vert,int dim);
void addData(浮点值);
};
TwoDMap::TwoDMap(整数个顶点,整数维)
{
num_顶点=num_顶点;
dim=尺寸;
int_array.reserve(num_顶点*维度);
}
float-TwoDMap::getData(int-num\u-vert,int-dimension)
{
返回整数数组[(num_vert*dim)+维数];
}
void TwoDMap::addData(浮点值)
{
int_数组。向后推_(值);
}
void processStringVertex(TwoDMap返回向量、整数顶点索引、整数维、标准::字符串输入顶点)
{
//处理字符串的单个部分并调用addData方法
//将单个浮动添加到地图的步骤
}
TwoDMap processStringVector(整数维,整数个顶点,标准::字符串输入向量)
{
TwoDMap array2D(顶点数,维数);
//处理整个字符串,调用processStringVertex方法
//并传入变量array2D
返回阵列2d;
}
int main()
{
std::string v=“{(0.00,0.00);(1.00,0.00);(0.00,1.00);(1.00,1.00)}”;
int-dim=2;
int num_verts=4;
TwoDMap vect=processStringVector(尺寸,垂直数,v);
对于(int i=0;istd::cout通过引用传递地图:

void processStringVertex(TwoDMap & return_vector, int vert_index, int dimension,
/*                              ^^^          */          std::string input_vertex)

如果在此时按值传递,则原始映射(即
processStringVector
中的局部变量
array2D
)从不修改。

您没有显示足够的代码。
addData
在您发布的代码中没有被调用。您尝试减少代码是件好事,但您需要提供足够的代码,以便其他人可以编译它并重现问题。另外,在
processStringVector()中
,第一行是函数声明。这里没有理由返回函数。