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

В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Футбольный ЧЕМПИОНАТ!!! http://www.cyberforum.ru/cpp-beginners/thread315511.html
Исходные данные или результат или и то и другое должно размещаться в текстовом файле. Отсортировать список команд по суммам очков двух туров футбольного чемпионата.
C++ Подсчитать количество подстрок в текстовом файле Помогите написать программу которая может подсчитать сколько раз подстрока встречается в текстовом файле. http://www.cyberforum.ru/cpp-beginners/thread315507.html
Рекурсия: вычислить сумму членов заданной последовательности C++
Составить программу с использованием рекурсивной функции, в которой вычислить сумму 12 членов рекурсивной последовательности Х0=1; Х1=1; Хк=0,7Хк-1+1,1Хк-2, к=2,3,... Добавлено через 3 часа 41 минуту Составить программу с использованием рекурсивной функции, в которой вычислить сумму 12 членов рекурсивной последовательности Х0=1; Х1=1; Хк=0,7Хк-1+1,1Хк-2, к=2,3,...
Заменить комментарии нечетной строки комментариями четной C++
Исходный текст должен содержаться в одном файле, результат — во втором файле. В программе на ассемблере заменить комментарии нечетной строки комментариями четной.
C++ Строки с++ http://www.cyberforum.ru/cpp-beginners/thread315494.html
a)Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв. b) Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке. помогите пож-та... сколько не пытаюсь я не могу решить эти задачи Добавлено через 18 минут помогите пож-та!!! может у кого то есть уже готовая программа или так обьяснить сможет=((((((((
C++ Вывести элементы массива в определенном порядке здраствуйте! кто может помогите пож-та или подскажите чем сможете... a)Дан массив A размера N. Вывести вначале его элементы с нечетными номерами в порядке возрастания номеров, а затем — элементы с четными номерами в порядке убывания номеров: A1, A3, A5, ... , A6, A4, A2. Условный оператор не использовать. Добавлено через 20 минут помогите пож-та!!! может у кого то есть уже готовая... подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
08.06.2011, 21:52  [ТС]     В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО!
Мда уж... Мне в голову не приходило, что переменной static можно присвоить какое-то иное значение кроме начального, ни разу с этим не сталкивался. Просто я ни разу не сталкивался, с рекурсивной функцией, которая вызывается несколько раз. Просто вроде, а вот поди ж ты... Да ещё и старина Аммерааль подлил масла в огонь, а я некритически отнёсся к авторитету. Вот текст из его книги, сдуто с формата djvu.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Мы можем использовать алгоритм for_each для вызова функции с каждым
из элементов последовательности в качестве аргумента. Вот программа,
которая демонстрирует это:
// for_each.cpp: Алгоритм for_each.
#include <iostream>
#include <algorithm>
using namespace std;
void display(int x){
static int i=0;
cout << "a[" << i++ << "] = " << x << endl;
}

int main()
{ const int N = 4;
int a[N] = {1234, 5432, 8943, 3346};
for_each(a, a+N, display);
return 0;
}

Эта программа работает точно так же, как если бы мы заменили вызов
for_each следующим оператором for.
for (int *р=а; р != a+N; р++)
display(*р);

В любом случае программа выведет
а[0] = 1234
а[1] = 5432
а[2] = 8943
а[3] = 3346

Функция display в этом примере обладает существенным недостатком:
переменная i равна нулю только тогда, когда эта функция вызывается в первый
раз.
Например, еще один такой же вызов for_each в функции main приведет
к ошибке, поскольку при повторном вызове функция display не начнет с i = 0.
Мы можем решить эту проблему с помощью функционального объекта.
Заменим функцию display следующим определением класса:


class display {
public:
display(): i(0){)
void operator()(int x)
{ cout << "a[n" << i++ <<"]=" << x << endl;
}
private:
int i ;
};
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Кошмар.
Спасибо всем большое, если чё, я отпишусь тут ещё.
 
Текущее время: 12:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru