我的文件中有2个函数,一个函数用于在struct('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;
}

===============>>#1 票数:1

您将按将结构传递给每个函数,因此每个函数都会收到该结构的副本 ,因此,您对副本所做的任何更改都是对副本的更改,而不是对原始更改。 更改函数以通过引用传递结构。

void izpis(const Oseba &oseba)

void vpis(Oseba &oseba)

===============>>#2 票数:0 已采纳

如果要对其进行更改,则需要按引用传递该对象:)

更改void vpis(Oseba oseba) {

使void vpis(Oseba& oseba) {

  ask by user3552865 translate from so

未解决问题?本站智能推荐: