przeciązenie operatora ++

mariusz198787
Użytkownik
Użytkownik
Posty: 92
Rejestracja: 25 lut 2007, o 14:20
Płeć: Mężczyzna
Lokalizacja: wawa
Podziękował: 2 razy
Pomógł: 1 raz

przeciązenie operatora ++

Post autor: mariusz198787 »

Witam
mam taki problem znczy sie nie widze jak by to zrobic znaczy sie jak przeciązyc operator ++ aby w klasie string zamienial duze litey na male prosze o wszelka pomoc
Rafal88K
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 15 mar 2007, o 16:52
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 28 razy
Pomógł: 54 razy

przeciązenie operatora ++

Post autor: Rafal88K »

Ogólnie przeciążenie tego operatora wygląda tak:

Kod: Zaznacz cały

Klasa& operator++(); // preinkrementacja
lub tak:

Kod: Zaznacz cały

const Klasa operator++(int); // postinkrementacja
mariusz198787
Użytkownik
Użytkownik
Posty: 92
Rejestracja: 25 lut 2007, o 14:20
Płeć: Mężczyzna
Lokalizacja: wawa
Podziękował: 2 razy
Pomógł: 1 raz

przeciązenie operatora ++

Post autor: mariusz198787 »

ok ale jak zamienaic te stringi(nie chodzi mi zeby ktos napisal gotowiec bo to nie w tym rzecz )
Rafal88K
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 15 mar 2007, o 16:52
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 28 razy
Pomógł: 54 razy

przeciązenie operatora ++

Post autor: Rafal88K »

mariusz198787 pisze:znaczy sie jak przeciązyc operator ++ aby w klasie string zamienial duze litey na male
Nie możesz przeciążyć operator++ bo w klasie string nie ma zdefiniowanego tego operatora, możesz napisać swoją klasę która rozszerzy klasę string o ten operator , a jak przeciążyć napisałem wyżej.

Literę możesz zamienić z małej na dużą odejmując od niej 32
mariusz198787
Użytkownik
Użytkownik
Posty: 92
Rejestracja: 25 lut 2007, o 14:20
Płeć: Mężczyzna
Lokalizacja: wawa
Podziękował: 2 razy
Pomógł: 1 raz

przeciązenie operatora ++

Post autor: mariusz198787 »

moje niedopatrzenie mialem na mysli własna klase stringa napisana przeze mnie
Rafal88K
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 15 mar 2007, o 16:52
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 28 razy
Pomógł: 54 razy

przeciązenie operatora ++

Post autor: Rafal88K »

Możesz to zrobić np. tak:

Kod: Zaznacz cały

class MyString : public string
{
	public:
		MyString(std::string inValue = "");

		const MyString& operator++();

		string get() const;

	private:
		std::string mValue;
};

MyString::MyString(std::string inValue) : mValue(inValue)
{
}

const MyString& MyString::operator++()
{
	for(std::string::iterator it = mValue.begin(); it != mValue.end(); ++it) {
		(*it) -= 32;
	}

	return *this;
}

std::string MyString::get() const
{
	return mValue;
}

std::ostream& operator<<(std::ostream& out, const MyString& inElem)
{
	cout << inElem.get();

	return out;
}
Wykorzystanie:

Kod: Zaznacz cały

	MyString str = "aa";
	++str;

	cout << str << endl;
Kod pisany na biegu, więc przejrzyj dokładnie czy błędów nie ma.
ODPOWIEDZ