С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Трудности с организацией классовой иерархии - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление ряда http://www.cyberforum.ru/cpp-beginners/thread640341.html
Всем доброго время суток. Нужно написать программу для вычисления ряда: 1 + 2*x + 3*{x}^{2} + 4*{x}^{3} + ... = \sum_{n=0}^{infinity}(n + 1)*{x}^{n}=\frac{1}{{(1-x)}^{2}} Аргумент x (x по модулю...
C++ Заполнить контейнер случайными числами ТОлько начинаю свой тернистый путь, многие с этого начинали так что не надо судить строго мой нубовский код! идея такова что бы контейнер заполняется числами до 1000 они там перемешиваются и... http://www.cyberforum.ru/cpp-beginners/thread640340.html
C++ Решение задач C++ Р. Лафоре
Всем привет. нужна помощь в в решении 11 задачи 2 главы книги. Уже все перепробовал, не могу найти друго решения как поставить подчеркивания после первой строки. В аттаче задание и мой солюшен,...
Считывание строки из бинарного файла в string C++
Привет всем!! Помогите новичку понять почему происходит ошибка при считывании строки из файла. void LoadFile() { string j; fstream in("library.dat", ios::in | ios::binary ); if(...
C++ Область видимости переменных http://www.cyberforum.ru/cpp-beginners/thread640329.html
Как использовать одну переменную в нескольких файлах, если эта переменная задана только в одном. Файлы между собой связаны Добавлено через 1 минуту Я просто хочу задать переменную в одном файле,...
C++ Можно ли циклом добавить свои 100 файлов в главный файл проекта Можно ли циклом добавить свои 100 файлов в главный файл проекта с помощью include? подробнее

Показать сообщение отдельно
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.08.2012, 00:48
реализуйте методы после объявления классов A и B. тогда, когда компилятор будет компилировать эти методы, он уже будет знать и о классе A и о классе B, т.е. код вызова методов этих классов будет компилироваться.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class A
{
    B* v;
public:
    A(B* e): v(e) {}
    void m() { v->c(); } // вот для компиляции этой строки класс B должен быть уже определен. но он определен ниже. поэтому метод нужно реализовывать после.
    void c() { std::cout << 0; }
};
class B
{
    A* v;
public:
    B(): v(new A(this)) {} // тут ок, потому что класс A определен выше.
    void m() { v->c(); } // тут ок, потому что класс A определен выше.
    void c() { std::cout << 1; }
};
 
void A::m() { v->c(); } // тут все ок. класс B уже определен и можно дергать его методы.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.