如何通过使用指向向量的共享指针将元素推入向量

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

可能是一个初学者问题..但我不知道在这种情况下如何进行推回

我有一个结构圆

struct circle
{
    std::string name;
    int PosX;
    int SpeedX;
    int PosY;
    int SpeedY;
    int ColorR;
    int ColorG;
    int ColorB;
    int Radius;
};

我有一个未知 nr 行的 stringstring 数组,其中包含 Circle cBlue 200 200 0.02 0.04 0 0 255 100 等对象 在具有指向圆向量的共享指针的函数中,我希望将此 cicle 推回到向量中

void FindCircles(std::shared_ptr<DynamicArray<std::string>> LocalStringArray, std::shared_ptr<std::vector<circle>> MyCircles)
{
//itterate to the array of strings 
    for (size_t i = 0; i < LocalStringArray->getSize() + 1; i++)
    {
        std::string ConfigElement = LocalStringArray->get(i);
//split the string into seperate substrings
        std::vector<std::string> result = splitString(ConfigElement, ' ');

 //when the line is a circle
        if (result[0] == "Circle")
        {
            circle Circle1;
            Circle1.name   = result[1];
            Circle1.PosX   = std::stoi (result[2]);
            Circle1.SpeedX = std::stof (result[4]);
            Circle1.PosY   = std::stoi (result[3]);
            Circle1.SpeedY = std::stof (result[5]);
            Circle1.ColorR = std::stoi (result[6]);
            Circle1.ColorG = std::stoi (result[7]);
            Circle1.ColorB = std::stoi (result[8]);
            Circle1.Radius = std::stoi (result[9]);
            //pushback into Mycircles
        }

    }
}

关于如何反击有什么建议吗?>

我尝试取消引用共享指针,但找不到有用的成员函数

vector shared
1个回答
0
投票

在我的 stringarray 中有 3 个圆圈,推回确实将 3 个圆圈推回到 MyCircles 向量中,但在函数本身之外仍保持活动状态 有时一整晚的睡眠就能起到作用

//find circles and copy them in circle array
void FindCircles(std::shared_ptr<DynamicArray<std::string>> LocalStringArray, std::shared_ptr<std::vector<circle>> MyCircles)
{
    for (size_t i = 0; i < LocalStringArray->getSize() + 1; i++)
    {
        std::string ConfigElement = LocalStringArray->get(i);
        std::vector<std::string> result = splitString(ConfigElement, ' ');

 
        if (result[0] == "Circle")
        {
            circle Circle1;
            Circle1.name   = result[1];
            Circle1.PosX   = std::stoi (result[2]);
            Circle1.SpeedX = std::stof (result[4]);
            Circle1.PosY   = std::stoi (result[3]);
            Circle1.SpeedY = std::stof (result[5]);
            Circle1.ColorR = std::stoi (result[6]);
            Circle1.ColorG = std::stoi (result[7]);
            Circle1.ColorB = std::stoi (result[8]);
            Circle1.Radius = std::stoi (result[9]);
        
            MyCircles->push_back(Circle1);
        }


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