c++ - 从列表中的对象更改变量 (c++)

标签 c++ list variables

我想更改例如从列表中的对象设置“Voornaam”。但出于某种原因,如果我用另一个函数显示列表中的对象,它不会改变。

我创建了一个函数“showWielrennerGegevens(*iter);”,这将显示该对象的所有变量。如果运行此功能,那么我可以看到更改。但如果我运行函数以在列表中显示对象,则不会

请帮忙

void Interface::wijzigPersoneelslid(Wielerploeg& wielerploegOB){

int input,inputWielrennerID,ingavekeuze;
string ingaveString;

int teller=0;

cout << "Wat voor een type wil je wijzigen?" << endl;
cout << "1 - Wielrenner" << endl;
cout << "2 - Dokter" << endl;
cout << "3 - Mecanicien" << endl;
cin >> input;

switch(input)
{
    case 1:{//Wielrenner
        cout << "Wielrenner" << endl;

        list<Wielrenner> wielrennerslist = wielerploegOB.getWielrennersList();
        cout << "Welke wielrenner wil je wijzigen?" << endl;

        // Alle objecten afprinten in de lijst
        for (list<Wielrenner>::iterator it = wielrennerslist.begin(); it != wielrennerslist.end(); it++){
            Wielrenner wielrennerOB = *it;
            cout << teller << " - " << wielrennerOB.getVoornaam() << " " << wielrennerOB.getAchternaam() << endl;
            teller++;
        }
        cin >> inputWielrennerID;

        // Naar het object gaan
        int N = inputWielrennerID; /* index of the element you want to retrieve */
        if (wielrennerslist.size() > N){
            list<Wielrenner>::iterator iter = wielrennerslist.begin();
            std::advance(iter, N);

            // 'it' points to the element at index 'N'

            Wielrenner wielrennerOB2 = *iter;
            //Wielrenner* wielrennerOB2 = *iter;

            cout << "\n De geselecteerde wielrenner is: " << endl;
            cout << " - " << wielrennerOB2.getVoornaam() << wielrennerOB2.getAchternaam() << endl;

            cout << "\n Wat wil je aanpassen?" << endl;
            cout << "1 - Voornaam" << endl;
            cout << "2 - Achternaam" << endl;
            cout << "3 - Telefoon" << endl;
            cin >> ingavekeuze;
            switch(ingavekeuze)                                                                                                                                                 
            {
                case 1:{ // voornaam
                    cout << "Ingave voornaam: ";
                    cin >> ingaveString;
                    //wielrennerOB2.setVoornaam(ingaveString);
                    (*iter).setVoornaam(ingaveString);

                    cout << "object " << endl;
                    showWielrennerGegevens(*iter);
                    break;
                }
                case 2:{ // achternaam
                    cout << "Ingave achternaam: ";
                    cin >> ingaveString;
                    wielrennerOB2.setAchternaam(ingaveString);

                    cout << "object " << endl;
                    showWielrennerGegevens(wielrennerOB2);
                    break;
                }
                case 3:{ // telefoon
                    cout << "Ingave telefoon: ";
                    cin >> ingaveString;
                    wielrennerOB2.setTelefoon(ingaveString);
                    break;
                }
                default:{
                    cout << "Switch Default waarde - wielrenner wijzig" << endl;
                }
            }
        }// if statement
        break;
    }// case 1
    case 2:{ // dokter
        cout << "Dokter" << endl;
        break;
    }
    default:{
        cout << "Switch Default waarde - Interface" << endl;
    }
} // switch

最佳答案

我认为发生这种情况是因为您复制了列表。您更改的是拷贝而不是原件。

list<Wielrenner> wielrennerslist = wielerploegOB.getWielrennersList();

这一行复制了列表。

接下来要做什么就很难说了。也许您需要这样做?

list<Wielrenner> wielrennerslist = wielerploegOB.getWielrennersList();
...
// make change to wielrennerslist 
...
// copy changed list back to original
wielerploegOB.setWielrennersList(wielrennerslist);

只有当你有一个方法 setWielrennersList 时,这才有效,如果没有,那么也许你应该写一个。

关于c++ - 从列表中的对象更改变量 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11921295/

相关文章:

c++ - 如何使用 C++ 计算表中每年的更新平均速度?

python - 根据value项获取key

Python:将随机数放入列表中

javascript - 动态创建的js脚本onClick函数变量未绑定(bind)在当前值

excel - 运行时错误 5 : Invalid Procedure Call or Argument

c++ 无法将指针数组初始化为 null c++

c++ - 如何判断当前项目是dll还是静态库?

Python 垃圾收集器和类变量

c++ - 将 QObject* 设置为 QMLEngine 根上下文属性

c++ - 如何访问 C++ 列表迭代器循环中的 'previous' 元素?