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

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

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

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

07.06.2011, 20:34. Просмотров 603. Ответов 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++ Перегрузка оператора "+" в классе
Как в классе А у объекта класса B вызвать метод класса B ? C++
C++ Шаблонная функция в простом классе и ошибка "Ссылка на неразрешенный внешний символ"
C++ базовый и производный класс, в базовом объявлена переменная "protected", она недоступна по имени в производном классе! template <class T> воду мутит!
C++ Описать класс "Контейнер" как объект, предназначенный для транспортировки классов "Строительных блоков"
C++ Вызвать метод класса в другом классе
Объект класса в классе C++
C++ Вызвать конструктор произвольного класса в другом классе
C++ Объект класса в другом классе
Создать объект шаблонного класса в другом классе C++
C++ Использование указателя на объект шаблонного класса в шаблонном классе.

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
07.06.2011, 21:00     У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? #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
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
07.06.2011, 21:49  [ТС]     У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? #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");
}
...А всё равно ошибки те же.
Ответ Создать тему
Опции темы

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