• 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

Object Storage Arubacloud
0 głosów
735 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,590 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 175 wizyt
pytanie zadane 11 listopada 2018 w C i C++ przez gorgonkowa Obywatel (1,810 p.)
0 głosów
3 odpowiedzi 2,540 wizyt
pytanie zadane 31 lipca 2018 w C i C++ przez Ptaszor3 Użytkownik (900 p.)
0 głosów
2 odpowiedzi 426 wizyt
pytanie zadane 13 lutego 2019 w C i C++ przez DarthMazut Bywalec (2,990 p.)

92,565 zapytań

141,417 odpowiedzi

319,601 komentarzy

61,950 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...