#include <iostream>
#include <conio.h>
using namespace std;
class AClass
{
private:
char *m_string;
public:
AClass() { m_string = new char[80]; }
~AClass() { delete []m_string; }
void In();
char* Out() const { return m_string; }
char* operator[] ();
};
//------------------------------------------------------------------------
class BClass
{
public:
BClass() {};
~BClass() {};
void OutMinStr(char*);
};
//------------------------------------------------------------------------
void AClass::In()
{
cout << "Enter a string: ";
gets(m_string);
cout << "---------------";
}
//------------------------------------------------------------------------
char* AClass::operator[] ()
{
return m_string;
}
//------------------------------------------------------------------------
/*вывод на экран слова минимальной длинны
символьной строки объекта класса АClass*/
void BClass::OutMinStr(char* string)
{
for (int i = 0; string == 32; i++); //начало 1-го слова
for (int q = i; string[q] != 32; q++); //конец 1-го слова
int min1 = q - i; //хранит длину min слова
int p = i; //указывает на 1 символ слова min длины
for (i = p + min1; string; i++)
{
if (string != 32)
{
for (int q = i; string[q] != 32; q++);
int min2 = q - i;
//Отсеивание min слова
if (min1 > min2)
{
min1 = min2;
p = i; //указывает на 1 символ слова min длины
}
i = q;
}
}
//вывод слова min длины
cout << "Slovo min dlini: ";
for ( ; string != 32; p++)
cout << string;
}
//------------------------------------------------------------------------
int main()
{
AClass oA;
BClass oB;
oA.In();
cout << endl;
cout << "String: " << oA.Out() << endl;
oB.OutMinStr(oA.Out());
cout << "operator[]: " << oA[] << endl;
cout << endl << endl;
cout << "Press any key..." << endl;
while(!_kbhit());
return 0;
}
Не могу понять operator[](С++)
1. Разработать класс А, одной из компонент которого является символьная строка и класс В, одним из методов которого является функция, выполняю-щая вывод на экран слова минимальной длинны символьной строки объекта класса А.(Решил, спасибо что помогли!:) )
2. Для созданного объекта a, разработанного класса – символьная строка, реализовать перегрузку операции []. Содержимое объекта (a, его строки) вы-вести на экран.(не пойму как реализовать перегрузку операции []...я должен строку возвратить или сам обьект?)
Вот код:
Код:
Вот еще:
Код:
char* AClass::operator[] () /*что передавать? неужто char* st а потом с strcpy работать...вобщем незнаю..инфы мало очень по оператору []*/
{
return m_string; //типо как и ф-ция Out() работать должна??
}
{
return m_string; //типо как и ф-ция Out() работать должна??
}
p/s дико извиняюсь..задачки легкие...просто дали мало времени на изучение языка+самому учить тяжело..я на заочке...
Может быть, надо вывести какой-либо символ строки? Если да, то:
Код:
char AClass::operator[]( int index )
{
return *(m_string + index);
}
// пример
AClass oA;
...
cout << oA[5] << endl;
{
return *(m_string + index);
}
// пример
AClass oA;
...
cout << oA[5] << endl;
не то?
обычно работают с элементами массива..тобишь..аргумент - элемент массива..а не весь масив
Да и спасибо большое, хот что то...будем думать!!!:)
Код:
char AClass::operator[]( int index )
{
return *(m_string + index);
}
- - - - -
for (int i=0; oA; i++)
{
cout << "operator[" << i << "]: " << oA << endl;
}
{
return *(m_string + index);
}
- - - - -
for (int i=0; oA; i++)
{
cout << "operator[" << i << "]: " << oA << endl;
}
Мот так надо?;)
Цитата: Maniac.by
Мот так надо?;)
Ну, это тебе видней. Главное, ты разобрался с перегрузкой operator[] ;)
Вроде понял:) Спасибо за помощь Lerkin!!