Obiekt w wektorze i konstruktor domyslny

0

Witam. Mam problem ze stworzeniem obiektu i wpisaniem go do wektora.

 

Player::Player(string xname, int xpoints)
	: name(xname)
	, points(xpoints)
{
	name = "wakat";
	points = 0;
}
void Player::get_name()
{
	cout << "Enter name:" << endl;
	string odp_imie;
	cin >> odp_imie;
	int odp_points = 0;
	players_tab.push_back(Player(odp_imie, odp_points));
}

W main jest takie coś i kompilator krzyczy przy Player p1;

 
Player p1;
void get_name();

Błagam niech ktos napisze jak to powinno być zrobione. Siedzę nad tym od 2 godzin :(
Ja to widzętak:
Najpierw tworzę obiekt p1 klasy Player. Konstruktor domyślny ustawia pole name na "wakat" i pole points na 0.
Potem poprzez funkcję get_name() znowu wykorzystuję konstruktor tworząc obiekt, ale tym razem wykorzystuję name wpisane z klawiatury. Jak ten kod powinien wyglądać prawidłowo ?
Chcę zrobić dokładnie tak:
Stworzyć obiekt p1, klasy Player a następnie wypełnić go imieniem z klawiatury i punktami równymi 0 i to wszystko włożyć do wektora, żeby było przechowywane.

0

A masz ten konstruktor domyślny? Wklej kod, a nie jego losowe fragmenty.

0

W takim razie chyba czegoś nie zrozumiałem z tutoriali :(
Za to co chcę zrobić odpowiada tylko ten kod, który wstawiłem.
@kq Myślałem, że to jest mój konstruktor:

Player::Player(string xname, int xpoints)
    : name(xname)
    , points(xpoints)
{
    name = "wakat";
    points = 0;
}
 
0

To jest konstruktor. Konstruktor domyślny to taki, który nie potrzebuje podania mu argumentów, a utworzony obiekt będzie miał wartości domyślne. Czy ten taki jest nie wiadomo, bo nie pokazałeś jego deklaracji wewnątrz klasy.

0

Deklaracja wewnątrz klasy:

 Player(string xname, int xpoints);

No prosze, ciekawych rzeczy się dowiaduję. Myślałem, że to jest konstruktor domyślny a to zwykły... jednak człowiek uczy się całe życie.

0

No ok. W takim razie:

Player p1;

Z jakimi wartościami wywołany jest konstruktor p1?

0

@kq wywołwany jest bez wartości, dokładnie tak jak napisałem

 Player p1;

. Już teraz rozumiem. Wywołuje go bez żadnych parametrów, mimo tego, że zadeklarowałem go z parametrami.

@kq EDIT: Dzięki Stary. Naprowadziłeś mnie na właściwe rozumowanie i już działa wszystko tak jak chciałem.

0

Napisałeś też, że kompilator "krzyczy". Teraz już wiesz dlaczego.

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