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?