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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
#1

У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? - C++

07.06.2011, 20:34. Просмотров 608. Ответов 2
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <windows.h>
#include <iostream>
using namespace std;
 
 
//Вот главный класс
class A{
 public:
  A (){};
  class B; 
};
 
 
//А это вот определение класса внутреннего или как его там.
//ВСя эта муть  затеяна с одной целью- рекурсивно вызвать operator()
//дабы она вернула 1, 2, 3, 4, 5
class B { 
 public: 
  B(): i(0){} 
 int operator()(int x){ 
  if (i< 5)
   operator()(x);
   return (++i+x);
  } 
 
  private: 
   int i ; 
}; 
 
 
 
int main() {
 A ob_1  ();
 //cout<< " "<< ob_1::B()(6)<< endl;
 //cout<< " "<< ob_1::B(6)<< endl;
 //cout<< " "<< ob_1.B()(6)<< endl;
 //cout<< " "<< ob_1.B(6)<< endl;
 system ("pause");
}
Вообще это не муть, а в этом есть здравый смысл. Если кто будет настаивать, я объясню. Пока же суть такая, примерно так:
C++
1
cout<< " "<< ob_1::()(6)<< endl;
Создать безымянный объект класса B, а в нём должна сразу вызваться рекурсивная функция "operator () (int x)" и вернуть... ну чё-нибудь, по задумке 10 (и вывести соответственно 10), но пока я с рекурсией не разбирался очень-то. Щас бы вызвать функцию для начала.

Добавлено через 2 минуты
Последний код читать:
C++
1
cout<< " "<< ob_1::B()(6)<< endl;
Исправленному верить!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2011, 20:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? (C++):

Перегрузка оператора вывода в классе "Время" - C++
Здравствуйте. Столкнулся с проблемой при работе с классом (Время), что выводит или чушь или вообще ничего не выводит. Прописал (вроде бы) 1...

Перегрузка оператора "+" в классе - C++
Hello!! Я создаю класс двумерного массива. Использую данный код: template &lt;typename T&gt; class Array2D { public: //...

Как в классе А у объекта класса B вызвать метод класса B ? - C++
Есть Класс A и класс B . В классе B лежит объект типа ArrayList , назовём его arrayList, в этом же классе есть метод push() . Возможно ли в...

Шаблонная функция в простом классе и ошибка "Ссылка на неразрешенный внешний символ" - C++
файл: A.h class A { public: template&lt;class T&gt; T func(T); }; файл: A.cpp

базовый и производный класс, в базовом объявлена переменная "protected", она недоступна по имени в производном классе! template <class T> воду мутит! - C++
Друзья! Вот код #include &lt;stdio.h&gt; template &lt;class T&gt; class otets { protected: int peremennaya; }; template &lt;class...

Функция оператора "+" класса valarray, нужен пример - C++
valarray&lt;T&gt; operator+() const; Друзья, дайте пример использования такого кода. Насколько я понимаю, в скобках должен быть...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
07.06.2011, 21:00 #2
Это будет не явно ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <windows.h>
#include <iostream>
using namespace std;
 
 
//Вот главный класс
class A{
 public:
  A (){};
  class B;
};
 
 
//А это вот определение класса внутреннего или как его там.
//ВСя эта муть  затеяна с одной целью- рекурсивно вызвать operator()
//дабы она вернула 1, 2, 3, 4, 5
class B {
 public:
  B(): i(0){}
  static int f(int x){
    static B a;
    return a(x);
  }
 int operator()(int x){
  if (x < 5)
   operator()(++x);
  return (i-- + x);
  }
 
  private:
   int i;
};
 
 
int main() {
  std::cout << B::f(5) << B::f(5) << B::f(5) << B::f(5) << B::f(5);
 //system ("pause");
}
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
07.06.2011, 21:49  [ТС] #3
Мне же рекурсивная нужна.

Добавлено через 1 минуту
И вызывать надо через A. Потому, что у меня будет объект класса A, а эта функция-, о которой идёт речь- метод.

Добавлено через 1 минуту
A ob_1 ();
cout<< " "<< ob_1::B()(6)<< endl;
ob_1 должно присутствовать

Добавлено через 15 минут
Прошу прощения, там в первом коде надо сперва создать объект класса A, вот так то есть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <windows.h>
#include <iostream>
using namespace std;
 
 
//Вот главный класс
class A{
 public:
  A (){};
  class B; 
};
 
 
//А это вот определение класса внутреннего или как его там.
//ВСя эта муть  затеяна с одной целью- рекурсивно вызвать operator()
//дабы она вернула 1, 2, 3, 4, 5
class B { 
 public: 
  B(): i(0){} 
 int operator()(int x){ 
  if (i< 5)
   operator()(x);
   return (++i+x);
  } 
 
  private: 
   int i ; 
}; 
 
 
 
int main() {
 A ob_1;
 //cout<< " "<< ob_1::B()(6)<< endl;
 //cout<< " "<< ob_1::B(6)<< endl;
 //cout<< " "<< ob_1.B()(6)<< endl;
 cout<< " "<< ob_1.B(6)<< endl;
 system ("pause");
}
...А всё равно ошибки те же.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2011, 21:49
Привет! Вот еще темы с ответами:

Описать класс "Контейнер" как объект, предназначенный для транспортировки классов "Строительных блоков" - C++
1. Опишите класс &quot;Строительный блок&quot;, описывающий габариты и массу блока прямоугольной формы. Данные класса: Габариты, масса. Методы...

Вызвать метод класса в другом классе - C++
Подскажите как мне вызвать метод класса в другом классе ?

Объект класса в классе - C++
Товарищи, помогите уже не знаю что делать!! Есть класс Point и класс Pixel, есть методы и там и там. В классе Pixel создаю объект типа...

Класс "Графический объект", от которого будут наследоваться классы "круг" и "квадрат" - C++
Реализовать класс Графический объект от которого будут наследоваться классы &quot;круг&quot; и &quot;квадрат&quot;. Собственно, сам код, который был написан...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru