Форум программистов, компьютерный форум CyberForum.ru

Перегрузка операторов и string - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Цикл с постусловием: поиск элемента с заданными свойствами http://www.cyberforum.ru/cpp-beginners/thread697239.html
Известны данные о мощности двигателя 30 моделей легковых автомобилей. Выяснить, есть ли среди них модель, мощность двигателя которой превышает 200 л.с. Помогите буду заранее блогодарен,начал изучать недавно С++
C++ найти все различающиеся элементы целочисленной квадратной матрицы нужна ваша помощь! напишите код проги http://www.cyberforum.ru/cpp-beginners/thread697236.html
C++ Вычислить сумму ряда (результат - приближенное значение функции exp в точке X)
while do 1) Дано вещественное число X и целое число N (> 0). Найти значение выражения + X + X2/(2!) + … + XN/(N!) (N! = 1•2•…•N). Полученное число является приближенным значением функции exp в точке X. 2)Имеется фрагмент программы в виде оператора цикла с параметром,обеспечивающий вывод на экран "столбиком" всех целых чисел от 100 до 80 .Оформить этот фрагмент в виде: оператора цикла с...
Известны данные о мощности двигателя 30 моделей легковых автомобилей. Выяснить, есть ли среди них модель, мощность двигателя которой превышает 200 л.с C++
1) я незнаю как сделать эту задачу через for Известны данные о мощности двигателя 30 моделей легковых автомобилей. Выяснить, есть ли среди них модель, мощность двигателя которой превышает 200 л.с.
C++ Перемножение двумерных массивов http://www.cyberforum.ru/cpp-beginners/thread697220.html
Помогите пожалуйста перемножить два двумерных массива (выразить линейный комбинации) допустим есть 2мерный массив G со строками 1 1 0 0 1 1 надо умножить на 2мерный массив U 0 0 0 1 1 0
C++ Доступ к методам производного класса Есть базовый класс CJobGeneral. В нём описано несколько методов. Есть унаследованный от него CJobCitomir с рядом своих методов. Есть третий класс CGenPjct, в котором объявляется переменная класса CJobGeneral: static CJobGeneral* m_Job; В классе CGenPjct есть функция, которая должна присвоить переменной m_Job объект либо класса CJobGeneral, либо CJobCitomir, в зависимости от переданного ей... подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
6366 / 3013 / 297
Регистрация: 04.12.2011
Сообщений: 8,105
Записей в блоге: 3
14.11.2012, 12:46     Перегрузка операторов и string
Цитата Сообщение от milvus Посмотреть сообщение
есть класс имитирующий стек, все методы проверены и работают правильно! Кроме части касающейся итераторов

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class stack;    // 
class stack_iterator;
 
class stack
{
friend class stack_iterator;    // говорит что класс итераторов стека может пользоваться приват объектами данного класса!
public:     
    stack(vector<string> &m); // КОНСТРУКТОР
 
    
private:    // доступны только функциям членам и друзьям класса, там определения функции членов!
    vector<string> _stack;  // вектор с элементами стека
 
};
 
// КОНСТРУКТОР
stack::stack(vector<string> &m) // инициазизация вектором
{
    vector<string>::iterator first = m.begin();
    for (int i=0;( first != m.end() && i != _stack_max_size); i++,first++)
                _stack.push_back(m[i]); // если указатель на вектор пустой то сюда вообще не зайдем
}
_stack - нестатический член и доступ возможен только через инициализированную переменную класса, а не через разрешение доступа ссылкой на тип, как у Вас: stack::_stack[_index];
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class stack_iterator
{
    string operator * (const stack_iterator & rhs) const    // разименование итератора! КАК член класса можно и как отд. функция см. за определ класса!!!!!!!!!!
    {return stack::_stack[_index];}//обращение к _elems возможно так как этот класс объявлен как друг для класса stack
    /*приф и постфиксные операторы перегруженные поэтому должны отличаться
    набором параметров, на самомо деле сам компилятор генерирует его
    поэтому делатеся все как обычно ++it; it++;*/
    string  operator ++() // префикс
    { ++_index; return stack::_stack[_index];}
    string  operator ++(int)    // постфикс
    {return stack::_stack[_index++];}
    string  operator --() // префикс
    { --_index; return stack::_stack[_index];}
    string  operator --(int)    // постфикс
    {return stack::_stack[_index--];}
private:
    int _index; //для ИТЕРАТОРОВ
 
};
Не лучше ли включить в класс указатель на экземпляр класса stack вроде stack* st;
и потом st->_stack[_index];
 
Текущее время: 02:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru