#ifndef __PRZEDMIOT_H__
#define __PRZEDMIOT_H__
#include <string>
#include <iostream>
using namespace std;
class Przedmiot
{
public:
//--Konstruktory
Przedmiot(string nazwa_, string rodzaj_, int atakMagiczny_,
int atakFizyczny_, int obronaMagiczna_, int obronaFizyczna_,
int minPoziom_, int cenaKupna_);
Przedmiot();
//--Metody Dostepowe
const string &nazwa() const {return _nazwa;}
const string &rodzaj() const {return _rodzaj;}
const int &atakMagiczny() const {return _atakMagiczny;}
const int &atakFizyczny() const {return _atakFizyczny;}
const int &obronaMagiczna() const {return _obronaMagiczna;}
const int &obronaFizyczna() const {return _obronaFizyczna;}
const int &minPoziom() const {return _minPoziom;}
const int &cenaKupna() const {return _cenaKupna;}
const int &cenaSprzedazy() const {return _cenaSprzedazy;}
const int strataWartosci() const {return _strataWartosci;}
private:
string _nazwa;
string _rodzaj; //np. helm, tarcza, bron, buty
int _atakMagiczny;
int _atakFizyczny;
int _obronaMagiczna;
int _obronaFizyczna;
int _minPoziom;
int _cenaKupna;
int _cenaSprzedazy;
float _strataWartosci = 0.6; // nie da sie zrobic const
};
//--
ostream &operator<<(ostream &out, const Przedmiot &p);
#endif
Jeżeli chodzi o nazewnictwo, to chce być konsekwentny. Dlatego pytam która wersja jest lepsza.
Wie ktos moze dlaczego nie moge zrobić? Cale IDE się wysypuje (Code::Blocks).
const float _strataWartosci = 0.6;
Oraz dlaczego _strataWartosci jest uznawana jako obiekt tymczasowy? Przez co musiałem zrobić metodę dostępowa bez zwracania referencji. Jak zmieniam float na int, tego ostrzeżenia nie ma.
Wasze wersje konstruktorów o niebo czytelniejsze. Teraz własnie tak zacznę je robić.
Co mi da przesłanie string przez const string &?