Klasa - no instance of constructor matches the argument list

0

Dzień dobry
W swoich początkach z C++ zaczynam rozpracowywać najprostsze klasy. Napisałem 3 pliki z kodem źródłowym.
Oto one:

Header.h:

 #ifndef HEADER_H_
#include <string>
class konto
{
private:
	std::string m_inwestor;
	long long m_nr_konta;
	long double m_stan_konta;
public:
	konto();
	konto(const std::string & inwestor, const long long nr_konta, long double & stan_konta);
	~konto();
	void show() const;
	void plus(long double wplata);
	void minus(long double wyplata);
};
#endif

definicje.cpp:

 #include <iostream>
#include "Header.h"

konto::konto()
{
	m_inwestor = "Nieznany";
	m_nr_konta = 1237568;
	m_stan_konta = 100.0;
}

konto::konto(const std::string & inwestor, const long long nr_konta, long double & stan_konta)
{
	m_inwestor = inwestor;
	m_nr_konta = nr_konta;
	m_stan_konta = stan_konta;
}

konto::~konto()
{
}

void konto::show() const
{
	std::cout << "Inwestor " << m_inwestor << ",\nNumer konta inwestora: " << m_nr_konta << ",\n";
	std::cout << "Kwota na koncie: " << m_stan_konta;
}

void konto::plus(long double wplata)
{
	if (wplata <= 0)
		std::cout << "Wplata musi przyjmowac wartosc dodatnia. Operacja przerwana.";
	else
		m_stan_konta += wplata;
}

void konto::minus(long double wyplata)
{
	if (wyplata <= 0)
		std::cout << "Wyplata musi przyjmowac wartosc dodatnia. Operacja przerwana.";
	else
		m_stan_konta -= wyplata;
}

oraz Source.cpp:

#include <iostream>
#include "Header.h"

int main()
{
	const std::string & mp = "maciek";
	konto maciek(mp, 12346794835, 24.58);
	std::cin.get();
	return 0;
} 

Ostatni miał tworzyć obiekt klasy i stosować na nim jej metody jednak natknąłem się na problem w postaci komunikatu jak w temacie z podkreślonym mp w nawiasie. Pełen komunikat to: "no instance of constructor matches the argument list. Arguments types are: (Const std::string, long long, double). O cóż chodzi? Wiem, że problem leży gdzieś w tym obiekcie klasy string. Gdy zainicjalizuję nim obiekt w taki sposób: konto maciek = konto("maciek", 12346794835, 24.58); też wyskoczy ten sam komunikat, tyle, że z const std::string zamienionym na const char * . W czym leży problem? Widziałem listingi, które moim zdaniem identycznie inicjalizowały obiekty klas. Co zrobić z tym stringiem?

1

Usun referencje w long double& stan_konta. Kurcze nie mam juz takiego strzala co kiedys.

0

Zaraz. Przecież ja mam w argumenentach konstruktora const. Usunięcie const z inicjalizacji tego mp nic nie daje. Komunikat o błędzie po prostu zamienia w nawiasie pierwszy argument z "const std::string" na "std::string" i dalej ten sam problem.

#Edit:
sprawdzę radę z edytowanego posta.

Ślicznie dziękuję. Działa. Szukałbym i szukał przez te mylne podkreślenia jeszcze parę dni :P

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