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

Перекрёстные ссылки в объявлениях классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ hexxagon http://www.cyberforum.ru/cpp/thread127078.html
доброго времени суток. у кого-нибудь есть исходный код игры гексагон? (hexxagon) имеется поле, состоящее из шестиугольников. На нем расставлены ваши фишки, и фишки врага. Причем этим врагом может стать как компьютер, так и человек. Перемещение фишек осуществляется по-очереди. Есть два способа передвинуть фишки. Первый: вы ставите новую фишку рядом со своей старой. При этом все фишки вокруг...
C++ Вопрос по std::map В качестве хэш-таблицы для строк (AnsiString) я использовал std::map. От таблицы мне нужно было ещё и такое свойство: я хотел иметь информацию о том, присутсвует данный ключ в таблице или нет. В описании std::map сказано, что оператор ВСЕГДА создаёт элемент в таблице. В случае со String'ами такой проблемы как таковой не было, потому как даже если элемент создаётся в таблице, то он создаётся... http://www.cyberforum.ru/cpp/thread127021.html
Готовый проекты в Visual Studio на С++ C++
Здравствуйте. Я ищу готовые проекты visual studio на с++. Нужны они мне для метрического анализа для диплома. Несколько открытых программ я нашел на SF.net, но они там попадаются очень редко. Может кто поможет с поиском, или поделится своими разработками?
C++ Нужно разобраться со стеком
Доброго времени суток... Помогите, пожалуйста, разобраться со стеком. Задание следующие : "написать программу для перестановки элементов стека x(1),x(2),x(3),...x(n)=>x(2),x(3),...x(n),x(1). Элементы пронумерованы в порядке их введения в стек." Нужна программа под dos, без доп. библиотек. Приведу пример программы работы со стеком. В программе вводится стек из н эллементов, и выводится на...
C++ Создание нескольких объектов приводит к ошибке http://www.cyberforum.ru/cpp/thread126332.html
for(int i=1,j=0;i<22;i++) for(j=1;j<32;j++) switch (MCard){ case 0:{ TNight *Night = new TNight; // создав 5 объектов *Night экземпляра TNight на 6 раз выдает ошибку . . . Ошибка доступа к защищенной памяти.
C++ О "нестабильности" или "переполнении" цикла foreach Здравствуйте, коллеги. Недавно коллега-программист сообщил мне страшную вещь: оказывается, что цикл foreach может переполниться при большом объеме (50000) обрабатываемых записей (в результате часть записей не обрабатывается). Я сам ни разу с этим явлением не сталкивался. Может ли кто-либо подтвердить это заявление? Заранее благодарен. Александр. подробнее

Показать сообщение отдельно
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
10.05.2010, 05:52     Перекрёстные ссылки в объявлениях классов
вот что я сделал:
main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "etier.h"
#include "A.h"
#include "B.h"
#include "A1.h"
#include "B1.h"
int main()
{
    A a;
    A1 a1;
    B b;
    B1 b1;
    return 0;
}
A.h:
C++
1
2
3
4
#include "etier.h"
class A{
    B *bptr(){}
};
A1.h:
C++
1
2
3
4
5
#include "etier.h"
class A1: public A
{
    virtual B1* bptr(){}
};
B.h:
C++
1
2
3
4
#include "etier.h"
class B{
    A *aptr(){}
};
B1.h:
C++
1
2
3
4
5
#include "etier.h"
class B1: public B
{
    virtual A1* aptr(){}
};
etier.h:
C++
1
2
3
4
5
6
7
#ifndef ENTIER
#define ENTIER
class A;
class A1;
class B;
class B1;
#endif
компиляция:
Код
C:\Program Files\CodeBlocks\MinGW\bin>g++ test/main.cpp -E > log.txt
log.txt:
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
40
41
42
43
44
45
46
# 1 "test/main.cpp"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "test/main.cpp"
# 1 "test/etier.h" 1
 
 
class A;
class A1;
class B;
class B1;
# 2 "test/main.cpp" 2
# 1 "test/A.h" 1
 
class A{
    B *bptr(){}
};
# 3 "test/main.cpp" 2
# 1 "test/B.h" 1
 
class B{
    A *aptr(){}
};
# 4 "test/main.cpp" 2
# 1 "test/A1.h" 1
 
class A1: public A
{
    virtual B1* bptr(){}
};
# 5 "test/main.cpp" 2
# 1 "test/B1.h" 1
 
class B1: public B
{
    virtual A1* aptr(){}
};
# 6 "test/main.cpp" 2
int main()
{
    A a;
    A1 a1;
    B b;
    B1 b1;
    return 0;
}
скомпилировалось без ошибок и предупреждений. я использовал среду code blocks. Если ты такой среды не знаешь и хочешь скомпилировать проект в ней, то вот что надо сделать: установить среду (само собой), открыть файл test.cbp, и нажать на синенький треугольник вверху.
если не получится собрать то вот makefile:
Bash
1
2
3
4
5
6
7
# makefile для проекта test
 
test: main.o
    g++ main.o -o test
 
main.o: A.h A1.h B.h B1.h etier.h
    g++ -c main.cpp
хотя я его не проверял.
П.С. etier.h - это я опечатался в самом начале, потом лень было исправлять, правильно entier.h - "полный".
архив с проектом прилагается.
Вложения
Тип файла: zip test.zip (15.3 Кб, 11 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru