Вниз  C / C++
- 19.09.2014 / 21:11
Naik
  Пользователь

Naik 
Сейчас: Offline
aNNiMON, прототип не вставил просто
- 19.09.2014 / 21:14
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Online
Naik, тогда стандартный ответ "зависит от компилятора"
__________________
 let live
- 19.09.2014 / 22:51
dzanis
  Пользователь

dzanis 
Сейчас: Offline
Naik, Неужели 5 ? Это тогда странно и по питонски. :lol:
Ой,инкримент забыл,будет 6?

Изменено dzanis (19.09 / 22:53) (всего 1 раз)
- 19.09.2014 / 23:11
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Online
dzanis, gcc говорит 5 http://ideone.com/RL3qD5 но всё-таки это от компиля зависит, я уверен.
__________________
 let live

Изменено aNNiMON (19.09 / 23:11) (всего 1 раз)
- 19.09.2014 / 23:17
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Online
Кому нужна куча подобных упоротых вопросов по C++ (и не только), вот, держите. По C++ там в конце обычно, вначале C#.
Если нужны ответы, пишите номер вопроса, я кину.
__________________
 let live

Изменено aNNiMON (19.09 / 23:18) (всего 2 раза)


Прикрепленные файлы:
I тур(Rus) Olym(…).pdf (324.86 кб.) Скачано 468 раз
I тур(Rus) Olym(…).pdf (319.22 кб.) Скачано 1082 раза
- 20.09.2014 / 14:16
NeiroNext
  Пользователь

NeiroNext 
Сейчас: Offline
Здраствуйте!
Помогите разобраться в чем проблема, хотя я догадываюсь в чем она, но не знаю как это реализовать на С++. Мне нужно узнать как это реализовать на С++.
Вот пример: класс А обьявляет класс В, в который передается ссылка на текущий класс, но чтобы эту ссылку понимать класс В включает (include) класс А (в этом и проблема) , но из-за указанной проблемы класс В так и не знает ничего об классе А и компилятор выдает ошибку.
A.h
  1. #ifndef A_H
  2. #define A_H
  3.  
  4. #ifndef ONE
  5. #define ONE 1
  6. #include "B.h"
  7. #endif // ONE
  8.  
  9. class A
  10. {
  11.     public:
  12.         A();
  13.         virtual ~A();
  14.     protected:
  15.     private:
  16.         B *b;
  17. };
  18.  
  19. #endif // A_H
A.cpp
  1. #include "A.h"
  2.  
  3. A::A(){
  4.     b = new B(this);
  5. }
  6.  
  7. A::~A(){
  8. }
B.h
  1. #ifndef B_H
  2. #define B_H
  3.  
  4. #include "A.h"
  5.  
  6.  
  7. class B
  8. {
  9.     public:
  10.  
  11.         B(A *a);      // Про класс А ничего неизвестно, поэтому ошибка
  12.         virtual ~B();
  13.     protected:
  14.     private:
  15.         A *a;         // Ошибка
  16. };
  17.  
  18. #endif // B_H
B.cpp
  1. #include "B.h"
  2.  
  3. B::B(A *a){
  4.     this->a = a;
  5. }
  6.  
  7. B::~B(){}
Очень надеюсь на помощь, т.к. в гугле просто не могу это найти а проблема для меня новая т.к. привык к java где такой проблемы не будет.
Всем заранее спасибо!!!
- 20.09.2014 / 14:22
aRiGaTo
  Пользователь

aRiGaTo 
Сейчас: Offline
NeiroNext, сомневаюсь, что макропроцессор умеет работать с классами. Может, проблема в этом?
__________________
 don't tread on me
- 20.09.2014 / 14:31
NeiroNext
  Пользователь

NeiroNext 
Сейчас: Offline
aRiGaTo, Да как так то, си++ ведь ОО язык, здесь вроде как или зацыкливание, или при проверке компилятором хидера класса В класс А ещё не полностью проверился и про него ничего неизвестно. Я просто незнаю как это исправить :-(
- 20.09.2014 / 14:54
aRiGaTo
  Пользователь

aRiGaTo 
Сейчас: Offline
NeiroNext, #ifdef-#endif -директивы макропроцессора. Вычисляются не во время исполнения, а до - во время компиляции.
P.S.: Зачем они вообще нужны здесь?
__________________
 don't tread on me

Изменено aRiGaTo (20.09 / 14:54) (всего 1 раз)
- 20.09.2014 / 15:07
NeiroNext
  Пользователь

NeiroNext 
Сейчас: Offline
aRiGaTo, А, извиняюсь, это я забыл их прибрать, на них можно не обращать никакого внимания, к проблеме они отношения не имеют - баловался ими немноно.
Наверх  Всего сообщений: 2777
Фильтровать сообщения
Поиск по теме
Файлы топика (111)