Stl list fukcja

0

Witam, mam pewien problem z dodawaniem osób do listy. Nie do końca wiem czy podaje dobry argument do funkcji. Z góry wielkie dzięki.

 #ifndef _NAGŁÓWEK_H
#define _NAGŁÓWEK_H

#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <string>
#include <list>
#include <algorithm>

using namespace std;

struct sBaza
{
	string Imie_Nazwisko[25];
	string Wiek;
	string Data_urodzenia[25];
	string Ulica[50];
	string Miasto[25];
	string Kod_Pocztowy[25];

};

list <sBaza> Lista;

char Menu();
void Dodaj_Osobe(list <sBaza> Lista);



#endif
 #include "Nagłówek.h"

char Menu()
{
	char menu;
	cout << endl << "1 - Dodaj nowa osobe"
		<< endl << "2 - Wyswietl wszystkie elementy"
		<< endl << "3 - Znajdz"
		<< endl << "4 - Sortowanie po imieniu i nazwisku oraz adresie"
		<< endl << "5 - Znajdz osoby urodzone w danym miesiacu" << endl;
	cout << endl << "Wprowadz cyfre : ";
	cin >> menu;

	return menu;
}


void Dodaj_Osobe(list <sBaza> Lista)
{
	sBaza Osoba;
	cout << "Podaj Imie i nazwisko : ";
	cin.ignore();
	getline(cin, Osoba.Imie_Nazwisko[25]);

	cout << "Podaj wiek : ";
	cin >> Osoba.Wiek[25];

	cout << "Podaj date urodzenia : ";
	cin >> Osoba.Data_urodzenia[25];

	cout << "Wpisz nazwe ulicy : ";
	getline(cin, Osoba.Ulica[50]);

	cout << "Wpisz nazwe miasta/wsi : ";
	getline(cin, Osoba.Miasto[25]);

	cout << "Wpisz kod pocztowy : ";
	getline(cin, Osoba.Kod_Pocztowy[25]);

	Lista.push_back(Osoba);
	
}
#include "Nagłówek.h"

int main()

{
	for (;;)
	{
		char wybor;
		wybor = Menu();

		switch (wybor)
		{
			case '1':
		{
			Dodaj_Osobe(Lista);
			break;
		}

			case '2':
		{

			break;
		}

			case '3':
		{

			break;
		}

			case '4':
		{

			break;
		}

			case '5':
		{


			break;
		}

		}
	}
	
	system("pause");
	return 0;
} 

Dlaczego to nie ma praw działać?
Wyrzuca mi takie błędy :

Błąd 1 error LNK2005: "class std::list<struct sBaza,class std::allocator<struct sBaza> > Lista" (?Lista@@3V?$list@UsBaza@@V?$allocator@UsBaza@@@std@@@std@@A) already defined in Funkcje.obj C:\Users\lots6_000\documents\visual studio 2013\Projects\Baza danych\Baza danych\Źródło.obj Baza danych

Błąd 2 error LNK1169: one or more multiply defined symbols found C:\Users\lots6_000\documents\visual studio 2013\Projects\Baza danych\Debug\Baza danych.exe 1 1 Baza danych

1
  1. Wywal
list <sBaza> Lista;

z pliku nagłówkowego i wstaw do main.

  1. Przekazujesz listę przez wartość, więc dodajesz osobę do kopii listy. Powinno być:
void Dodaj_Osobe(list<sBaza>& Lista)
1
struct sBaza
{
    string Imie_Nazwisko[25];
    string Wiek;
    string Data_urodzenia[25];
    string Ulica[50];
    string Miasto[25];
    string Kod_Pocztowy[25];
 
};

To nie ma żadnego sensu. Każda z wymienionych tutaj zmiennych (poza Wiek) to tablica stringów. Używaj po prostu string ImieNazwisko

list <sBaza> Lista;

Co Ty tutaj chciałeś osiągnąć? Osiągnąłeś zmienną globalną redefiniowaną w każdym TU, co łamie ODR (one definition rule).

Jeśli to musi być zmienna globalna to w nagłówku

extern list <sBaza> Lista;

a definicja tylko w jednym pliku .cpp.

getline(cin, Osoba.Imie_Nazwisko[25]);

UB, wczytujesz do 26-tego elementu 25-elementowej tablicy stringów Imie_Nazwisko.

#include "Nagłówek.h"

#ifndef _NAGŁÓWEK_H
#define _NAGŁÓWEK_H

 Polskie znaki w kodzie, fuj.
0

Pomogło!! Wielkie dzięki jeszcze raz . Na przyszłość będę pamiętał :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1