我的文件中有2个函数,一个用于输入结构中的信息(' vpis()'),另一个用于打印出它的内容(' izpis()&# 39)。输入功能不保存我输入的信息。这是代码:
#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;
}
答案 0 :(得分:1)
您正在将结构传递给每个函数按值,因此每个函数都会收到结构的副本,因此您所做的任何更改都是对副本进行的,不是原来的。更改您的函数以通过引用传递结构 。
void izpis(const Oseba &oseba)
void vpis(Oseba &oseba)
答案 1 :(得分:0)
如果要对其进行更改,您将希望通过引用传递对象:)
更改void vpis(Oseba oseba) {
到void vpis(Oseba& oseba) {