gpt4 book ai didi

c++ - 如何使函数保存对 C++ 中结构输入的修改?

转载 作者:行者123 更新时间:2023-11-28 06:55:56 24 4
gpt4 key购买 nike

我的文件中有 2 个函数,一个用于在结构 ('vpis()') 中输入信息,另一个用于打印它的内容 ('izpis()')。输入功能不保存我输入的信息。这是代码:

#include <iostream>
#include <string>
using namespace std;

enum TIP_NASLOVA {
STALNI,
ZACASNI
};

struct Naslov {
string ulica;
string posta;
int postna_stevilka;
TIP_NASLOVA tip;
};

struct Oseba {
string ime;
string priimek;
int starost;
Naslov naslov;
};

void izpis(Oseba oseba) {
cout << "IZPIS VNOSA" << endl << endl;
cout << "Ime: " << oseba.ime << endl;
cout << "Priimek: " << oseba.priimek << endl;
cout << "Starost: " << oseba.starost << endl;
cout << "Tip Naslova: " << oseba.naslov.tip << endl;
cout << "Posta: " << oseba.naslov.postna_stevilka << " " << oseba.naslov.posta << endl;
cout << "Naslov: " << oseba.naslov.ulica << endl;
}

void vpis(Oseba oseba) {
int tip;
cout << "VPIS PODATKOV NOVEGA VNOSA" << endl << endl;
cout << endl << "VPISI IME: ";
cin >> oseba.ime;
cout << endl << "VPISI PRIIMEK: ";
cin >> oseba.priimek;
cout << endl << "VPISI STAROST: ";
cin >> oseba.starost;
cout << endl << "VPISI TIP NASLOVA ( 1-STALNI / 2-ZACASNI ): ";
cin >> tip;

switch (tip){
case 1:
oseba.naslov.tip = STALNI;
break;
case 2:
oseba.naslov.tip = ZACASNI;
break;
default:
cout << "Napaka! Izbrali ste napacen tip naslova. " <<endl;
break;
}

cout << endl << "VPISI POSTNO STEVILKO: ";
cin >> oseba.naslov.postna_stevilka;
cout << endl << "VPISI POSTO: ";
cin >> oseba.naslov.posta;
cout << endl << "VPISI NASLOV (FORMAT:'TrgGeneralaMaistra1'): ";
cin >> oseba.naslov.ulica;
cout << endl;
}

int main() {
Oseba oseba;
int x;
cout << "VPIS IN IZPIS OSEBNIH PODATKOV" << endl << endl;
for (;;) {
cout << "Dolocite zahtevano operacijo (1-VPIS, 2-IZPIS): ";
cin >> x;
cout << endl << endl;
switch (x){
case 1:
vpis(oseba);
break;
case 2:
izpis(oseba);
break;
default:
cout << "Izbrali niste nobene operacije!" << endl << endl;
}
}

return 0;
}

最佳答案

您正在将您的结构按值传递给每个函数,因此每个函数都会收到结构的拷贝,因此您所做的任何更改都是对拷贝的,不是原来的。更改您的函数以改为通过引用传递结构。

void izpis(const Oseba &oseba)

void vpis(Oseba &oseba)

关于c++ - 如何使函数保存对 C++ 中结构输入的修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com