• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

(jestem początkujący) inicjalizacja struktur c++ w działaniach na osobnych plikach

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
1,063 wizyt
pytanie zadane 8 stycznia 2017 w C i C++ przez heros22pt Użytkownik (950 p.)
edycja 8 stycznia 2017 przez heros22pt

Witam, mam problem z prostym programem (rozbitym na 3 pliki "osoby.cpp", "osoby.h", "main.cpp").

osoby.cpp:

#include"osoby.h"
using namespace std;

Osoba wczytaj(Osoba nowa)
{
	cout << "\nimie: ";
	cin.getline(nowa.imie, 20);
	cout << "\nnazwisko: ";
	cin.getline(nowa.nazwisko, 20);
	cout << "\nwaga: ";
	cin >> nowa.waga;
	cout << "\nwiek: ";
	cin >> nowa.wiek;
	cout << "\nwzrost: ";
	cin >> nowa.wzrost;

	return nowa;
}

osoby.h

#ifndef OSOBY_H
#define OSOBY_H

#include<iostream>

struct Osoba
{
	char imie[20];
	char nazwisko[20];
	int wiek;
	double waga;
	int wzrost;
};

Osoba wczytaj(Osoba nowa);

#endif

main.cpp:

#include"osoby.h"

using namespace std;
int main()
{

	Osoba testowa;
//	testowa.wiek = 15;


	wczytaj(testowa);
	system("pause");
}

Program ma pobierać od użytkownika dane do struktury utworzonej w pliku nagłówkowym "osoby.h". Jednakże po uruchomieniu program uruchamia się, po czym wyskakuje napis, że użyto zmiennej bez jej inicjacji: 

Run-Time Check Failure #3 - The variable 'testowa' is being used without being initialized.

po kliknięciu "continue" program dziala tak jak powinien, czyli pyta o imie, nazwisko itd oraz zapisuje to w zmiennej strukturalnej. 

Przetestowałem nadanie zmiennej jakiejś wartości początkowej (tak jak w pliku main.cpp - to co jest skomentowane) i wtedy program działa bez problemu. Czy można temu jakoś zaradzić w inny sposób? Może czegoś nie widzę.. Z góry dziękuję za pomoc

1 odpowiedź

+1 głos
odpowiedź 8 stycznia 2017 przez unknown Nałogowiec (39,560 p.)
wybrane 8 stycznia 2017 przez heros22pt
 
Najlepsza
Zdefiniuj konstruktor domyślny.
komentarz 8 stycznia 2017 przez heros22pt Użytkownik (950 p.)
jak to zrobić?
komentarz 8 stycznia 2017 przez criss Mędrzec (172,570 p.)
Po prostu napisz konstruktor nie biorący żadnych argumentów nadający polom struktury jakieś wartości.
komentarz 8 stycznia 2017 przez unknown Nałogowiec (39,560 p.)
struct Osoba
{
    char imie[20]{};
    char nazwisko[20]{};
    int wiek{};
    double waga{};
    int wzrost{};
};

Co prawda nie jest to konstruktor, tylko inicjalizatory wewnątrzklasowe, ale są lepsze w tym wypadku.

Podobne pytania

0 głosów
0 odpowiedzi 209 wizyt
pytanie zadane 11 listopada 2018 w C i C++ przez gorgonkowa Obywatel (1,810 p.)
0 głosów
3 odpowiedzi 2,823 wizyt
pytanie zadane 31 lipca 2018 w C i C++ przez Ptaszor3 Użytkownik (900 p.)
0 głosów
2 odpowiedzi 625 wizyt
pytanie zadane 13 lutego 2019 w C i C++ przez DarthMazut Bywalec (2,990 p.)

93,440 zapytań

142,431 odpowiedzi

322,679 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...